diff --git a/Assets/GadGame/Scenes/Game.unity b/Assets/GadGame/Scenes/Game.unity
index dd28358..18689cf 100644
--- a/Assets/GadGame/Scenes/Game.unity
+++ b/Assets/GadGame/Scenes/Game.unity
@@ -123,6 +123,90 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
+--- !u!1 &16274919
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 16274920}
+ - component: {fileID: 16274921}
+ m_Layer: 0
+ m_Name: Circle (3)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &16274920
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 16274919}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &16274921
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 16274919}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1001 &22570934
PrefabInstance:
m_ObjectHideFlags: 0
@@ -239,6 +323,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (9)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -449,6 +537,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (3)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -744,6 +836,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (7)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -784,7 +880,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: -10}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &201703999
@@ -859,6 +955,174 @@ Transform:
- {fileID: 1822366210}
m_Father: {fileID: 41715676}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &236078963
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 236078964}
+ - component: {fileID: 236078965}
+ m_Layer: 0
+ m_Name: Circle (8)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &236078964
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 236078963}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &236078965
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 236078963}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &252197707
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 252197708}
+ - component: {fileID: 252197709}
+ m_Layer: 0
+ m_Name: Circle (13)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &252197708
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 252197707}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &252197709
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 252197707}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &272528180
GameObject:
m_ObjectHideFlags: 0
@@ -943,6 +1207,90 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
+--- !u!1 &284046319
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 284046320}
+ - component: {fileID: 284046321}
+ m_Layer: 0
+ m_Name: Circle (6)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &284046320
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 284046319}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &284046321
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 284046319}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &332379179
GameObject:
m_ObjectHideFlags: 0
@@ -1135,6 +1483,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (6)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -1287,6 +1639,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (2)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -1413,6 +1769,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (4)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -1662,6 +2022,170 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 506579238345646780, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
m_PrefabInstance: {fileID: 22570934}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &636098794
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 636098795}
+ - component: {fileID: 636098798}
+ - component: {fileID: 636098797}
+ - component: {fileID: 636098796}
+ m_Layer: 5
+ m_Name: loading
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &636098795
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 636098794}
+ 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: 1691484230}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: -472}
+ m_SizeDelta: {x: 826.54, y: 132}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &636098796
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 636098794}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ typewriterStartsAutomatically: 0
+ animationLoop: 0
+ timeScale: 0
+ _text:
+ useDynamicScaling: 1
+ referenceFontSize: 10
+ isResettingTimeOnNewText: 1
+ useDefaultDatabases: 1
+ databaseBehaviors: {fileID: 0}
+ databaseAppearances: {fileID: 0}
+ databaseActions: {fileID: 0}
+ defaultAppearancesTags:
+ - size
+ defaultDisappearancesTags:
+ - fade
+ defaultBehaviorsTags: []
+ defaultTagsMode: 0
+--- !u!114 &636098797
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 636098794}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: Wait For Gift...
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: 2426
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 50
+ m_fontSizeBase: 50
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &636098798
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 636098794}
+ m_CullTransparentMesh: 1
--- !u!1 &655028317
GameObject:
m_ObjectHideFlags: 0
@@ -2114,6 +2638,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (8)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -2362,6 +2890,90 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
+--- !u!1 &987322746
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 987322747}
+ - component: {fileID: 987322748}
+ m_Layer: 0
+ m_Name: Circle (9)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &987322747
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 987322746}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &987322748
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 987322746}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &998003724
GameObject:
m_ObjectHideFlags: 0
@@ -2523,7 +3135,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!224 &1137171261
RectTransform:
m_ObjectHideFlags: 0
@@ -2643,6 +3255,174 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1182715074}
m_CullTransparentMesh: 1
+--- !u!1 &1187927588
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1187927589}
+ - component: {fileID: 1187927590}
+ m_Layer: 0
+ m_Name: Circle (12)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1187927589
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1187927588}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1187927590
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1187927588}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &1229982701
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1229982702}
+ - component: {fileID: 1229982703}
+ m_Layer: 0
+ m_Name: Circle (16)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1229982702
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1229982701}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1229982703
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1229982701}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &1230716509
GameObject:
m_ObjectHideFlags: 0
@@ -2897,6 +3677,90 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
+--- !u!1 &1271328619
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1271328620}
+ - component: {fileID: 1271328621}
+ m_Layer: 0
+ m_Name: Circle (7)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1271328620
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1271328619}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1271328621
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1271328619}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &1278601754
GameObject:
m_ObjectHideFlags: 0
@@ -3467,6 +4331,90 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
+--- !u!1 &1388027224
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1388027225}
+ - component: {fileID: 1388027226}
+ m_Layer: 0
+ m_Name: Circle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1388027225
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1388027224}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1388027226
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1388027224}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &1388120848
GameObject:
m_ObjectHideFlags: 0
@@ -3757,6 +4705,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (5)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -3874,6 +4826,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -4211,6 +5167,174 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
+--- !u!1 &1619835393
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1619835394}
+ - component: {fileID: 1619835395}
+ m_Layer: 0
+ m_Name: Circle (5)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1619835394
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1619835393}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1619835395
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1619835393}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &1634234204
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1634234205}
+ - component: {fileID: 1634234206}
+ m_Layer: 0
+ m_Name: Circle (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1634234205
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1634234204}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1634234206
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1634234204}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &1639241604
GameObject:
m_ObjectHideFlags: 0
@@ -4563,6 +5687,90 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1682928234}
m_CullTransparentMesh: 1
+--- !u!1 &1689361858
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1689361859}
+ - component: {fileID: 1689361860}
+ m_Layer: 0
+ m_Name: Circle (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1689361859
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1689361858}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1689361860
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1689361858}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &1691484229
GameObject:
m_ObjectHideFlags: 0
@@ -4600,6 +5808,7 @@ RectTransform:
- {fileID: 332379180}
- {fileID: 1827213708}
- {fileID: 1137171261}
+ - {fileID: 636098795}
m_Father: {fileID: 1939570967}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -4662,6 +5871,90 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 506579238345646780, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
m_PrefabInstance: {fileID: 1717529633}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &1716313073
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1716313074}
+ - component: {fileID: 1716313075}
+ m_Layer: 0
+ m_Name: Circle (14)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1716313074
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1716313073}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1716313075
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1716313073}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1001 &1717529633
PrefabInstance:
m_ObjectHideFlags: 0
@@ -4778,6 +6071,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (10)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -4998,6 +6295,54 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &1805668786
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1805668787}
+ m_Layer: 0
+ m_Name: GameObject
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1805668787
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1805668786}
+ 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:
+ - {fileID: 1388027225}
+ - {fileID: 1689361859}
+ - {fileID: 1634234205}
+ - {fileID: 16274920}
+ - {fileID: 2084131005}
+ - {fileID: 1619835394}
+ - {fileID: 284046320}
+ - {fileID: 1271328620}
+ - {fileID: 236078964}
+ - {fileID: 987322747}
+ - {fileID: 1950742235}
+ - {fileID: 1960192227}
+ - {fileID: 1187927589}
+ - {fileID: 252197708}
+ - {fileID: 1716313074}
+ - {fileID: 1955124308}
+ - {fileID: 1229982702}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1810672863
GameObject:
m_ObjectHideFlags: 0
@@ -5524,6 +6869,258 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
+--- !u!1 &1950742234
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1950742235}
+ - component: {fileID: 1950742236}
+ m_Layer: 0
+ m_Name: Circle (10)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1950742235
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1950742234}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1950742236
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1950742234}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &1955124307
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1955124308}
+ - component: {fileID: 1955124309}
+ m_Layer: 0
+ m_Name: Circle (15)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1955124308
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1955124307}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1955124309
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1955124307}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &1960192226
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1960192227}
+ - component: {fileID: 1960192228}
+ m_Layer: 0
+ m_Name: Circle (11)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1960192227
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1960192226}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1960192228
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1960192226}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &2012096804
GameObject:
m_ObjectHideFlags: 0
@@ -5829,6 +7426,90 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &2084131004
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2084131005}
+ - component: {fileID: 2084131006}
+ m_Layer: 0
+ m_Name: Circle (4)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2084131005
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2084131004}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1805668787}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &2084131006
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2084131004}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1001 &2087404703
PrefabInstance:
m_ObjectHideFlags: 0
@@ -5945,6 +7626,10 @@ PrefabInstance:
propertyPath: m_Name
value: AnimatedTextPrefab (1)
objectReference: {fileID: 0}
+ - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -6218,6 +7903,24 @@ MonoBehaviour:
_defaultCapacity: 10
_max: 100
_collectionCheck: 0
+ Objects:
+ - {fileID: 1388027225}
+ - {fileID: 1689361859}
+ - {fileID: 1634234205}
+ - {fileID: 16274920}
+ - {fileID: 2084131005}
+ - {fileID: 1619835394}
+ - {fileID: 284046320}
+ - {fileID: 1271328620}
+ - {fileID: 236078964}
+ - {fileID: 987322747}
+ - {fileID: 1950742235}
+ - {fileID: 1960192227}
+ - {fileID: 1187927589}
+ - {fileID: 252197708}
+ - {fileID: 1716313074}
+ - {fileID: 1955124308}
+ - {fileID: 1229982702}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@@ -6236,3 +7939,4 @@ SceneRoots:
- {fileID: 655028318}
- {fileID: 1281411708}
- {fileID: 1939570967}
+ - {fileID: 1805668787}
diff --git a/Assets/GadGame/Scenes/PassBy.unity b/Assets/GadGame/Scenes/PassBy.unity
index 10f2198..fbf248b 100644
--- a/Assets/GadGame/Scenes/PassBy.unity
+++ b/Assets/GadGame/Scenes/PassBy.unity
@@ -496,6 +496,7 @@ RectTransform:
- {fileID: 1509506830}
- {fileID: 1296119107}
- {fileID: 781534353}
+ - {fileID: 778936296}
m_Father: {fileID: 883611476}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -877,6 +878,170 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 752378338}
m_CullTransparentMesh: 1
+--- !u!1 &778936295
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 778936296}
+ - component: {fileID: 778936298}
+ - component: {fileID: 778936297}
+ - component: {fileID: 778936299}
+ m_Layer: 5
+ m_Name: Image_idle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &778936296
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 778936295}
+ 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: 324847414}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 706.0657, y: 166.71}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &778936297
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 778936295}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: IDLE WINDOW
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 80
+ m_fontSizeBase: 80
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &778936298
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 778936295}
+ m_CullTransparentMesh: 1
+--- !u!114 &778936299
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 778936295}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ typewriterStartsAutomatically: 0
+ animationLoop: 0
+ timeScale: 0
+ _text: IDLE WINDOW
+ useDynamicScaling: 1
+ referenceFontSize: 10
+ isResettingTimeOnNewText: 1
+ useDefaultDatabases: 1
+ databaseBehaviors: {fileID: 11400000, guid: d1ab346c8b166fe1babb05950e874fb1, type: 2}
+ databaseAppearances: {fileID: 11400000, guid: 6f440ba43b95f6c7e90fa305a0bbda32, type: 2}
+ databaseActions: {fileID: 11400000, guid: 0f78b267c3825f804a4727a8b68c329d, type: 2}
+ defaultAppearancesTags:
+ - size
+ defaultDisappearancesTags:
+ - fade
+ defaultBehaviorsTags: []
+ defaultTagsMode: 0
--- !u!1 &781534352
GameObject:
m_ObjectHideFlags: 0
@@ -1025,7 +1190,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
- m_AnchoredPosition: {x: 0.0000076293945, y: -337}
+ m_AnchoredPosition: {x: 0, y: -337}
m_SizeDelta: {x: 914.6453, y: 897.0692}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &883611477
@@ -1095,6 +1260,7 @@ MonoBehaviour:
_transform: {fileID: 324847414}
CircleImg: {fileID: 588222147}
txtProgress: {fileID: 278260376}
+ videoPlayer: {fileID: 2124753956}
--- !u!1 &1118910917
GameObject:
m_ObjectHideFlags: 0
@@ -1728,10 +1894,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 324847414}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
+ m_SizeDelta: {x: 914, y: 898}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1509506831
MonoBehaviour:
@@ -2470,8 +2636,8 @@ Canvas:
m_GameObject: {fileID: 1939570963}
m_Enabled: 1
serializedVersion: 3
- m_RenderMode: 0
- m_Camera: {fileID: 0}
+ m_RenderMode: 1
+ m_Camera: {fileID: 1302683601}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
@@ -2497,6 +2663,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 731571812}
+ - {fileID: 2124753955}
- {fileID: 1490140569}
- {fileID: 1796482201}
- {fileID: 883611476}
@@ -2717,6 +2884,78 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2003416019}
m_CullTransparentMesh: 1
+--- !u!1 &2124753954
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2124753955}
+ - component: {fileID: 2124753956}
+ m_Layer: 5
+ m_Name: Video Player_Idle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2124753955
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124753954}
+ 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: 1939570967}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 2160, y: 3840}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!328 &2124753956
+VideoPlayer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124753954}
+ m_Enabled: 1
+ m_VideoClip: {fileID: 32900000, guid: b431e4dee076c8b698cee9a4d18c6dbd, type: 3}
+ m_TargetCameraAlpha: 1
+ m_TargetCamera3DLayout: 0
+ m_TargetCamera: {fileID: 1302683601}
+ m_TargetTexture: {fileID: 0}
+ m_TimeReference: 0
+ m_TargetMaterialRenderer: {fileID: 0}
+ m_TargetMaterialProperty:
+ m_RenderMode: 1
+ m_AspectRatio: 2
+ m_DataSource: 0
+ m_TimeUpdateMode: 2
+ m_PlaybackSpeed: 1
+ m_AudioOutputMode: 2
+ m_TargetAudioSources:
+ - {fileID: 0}
+ m_DirectAudioVolumes:
+ - 1
+ m_Url:
+ m_EnabledAudioTracks: 01
+ m_DirectAudioMutes: 00
+ m_ControlledAudioTrackCount: 1
+ m_PlayOnAwake: 1
+ m_SkipOnDrop: 1
+ m_Looping: 1
+ m_WaitForFirstFrame: 1
+ m_FrameReadyEventEnabled: 0
+ m_VideoShaders: []
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
diff --git a/Assets/GadGame/Scripts/MainFlow.cs b/Assets/GadGame/Scripts/MainFlow.cs
index 7ad3078..7a1b6d8 100644
--- a/Assets/GadGame/Scripts/MainFlow.cs
+++ b/Assets/GadGame/Scripts/MainFlow.cs
@@ -19,8 +19,9 @@ namespace GadGame
DontDestroyOnLoad(gameObject);
}
- private void Start()
+ private async void Start()
{
+ await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(SceneFlowConfig.PassByScene.ScenePath);
SetState();
}
diff --git a/Assets/GadGame/Scripts/MiniGame/MiniGameController.cs b/Assets/GadGame/Scripts/MiniGame/MiniGameController.cs
index 83f9c51..4ce652a 100644
--- a/Assets/GadGame/Scripts/MiniGame/MiniGameController.cs
+++ b/Assets/GadGame/Scripts/MiniGame/MiniGameController.cs
@@ -11,6 +11,7 @@ using TMPro;
using UnityEngine;
using UnityEngine.UI;
using Random = UnityEngine.Random;
+using Newtonsoft.Json;
namespace GadGame.MiniGame
{
@@ -44,6 +45,9 @@ namespace GadGame.MiniGame
[Header("Pool")]
[SerializeField] private Pool- [] _itemPools;
[SerializeField] private Pool[] _bombPools;
+
+ private Vector2[] receivedData;
+ public Transform[] Objects;
private GameManager _gameManager;
private Camera _camera;
@@ -96,28 +100,49 @@ namespace GadGame.MiniGame
public void PlayerControl()
{
//640x480;
- var inputData = UdpSocket.Instance.DataReceived.PosPoint;
- var inputNormalize = new Vector2((inputData.x - 213.33f)/ 213.33f, inputData.y / 480);
+ // string inputData = UdpSocket.Instance.DataReceived.PosPoints;
+ // var inputNormalize = new Vector2((inputData.x - 213.33f)/ 213.33f, inputData.y / 480);
// var inputNormalize = new Vector2(inputData.x/ 200, inputData.y / 480);
- var input = new Vector2
+
+ receivedData = UdpSocket.Instance.DataReceived.PosPoints;
+ Debug.Log(receivedData);
+
+ for (int i = 0; i < Objects.Length; ++i)
{
- x = Mathf.Lerp(0, _canvas.pixelRect.width, inputNormalize.x),
- y = -Mathf.Lerp(0, _canvas.pixelRect.height, inputNormalize.y)
- };
- if (input != Vector2.zero)
- {
- var mousePos = input;
- var pos = _camera.ScreenToWorldPoint(mousePos);
- var currentPosition = _basket.Position;
- pos.x *= -1;
- pos.y = currentPosition.y;
- pos.z = 0;
- currentPosition= Vector3.Lerp(currentPosition, pos, _lerp * Time.deltaTime);
- currentPosition.x = Mathf.Clamp(currentPosition.x, -2.25f, 2.25f);
- var dirMove = (_preFramePosition - currentPosition).normalized;
- _basket.transform.DORotate(new Vector3(0, 0, 10 * dirMove.x), 0.2f);
- _basket.Position = currentPosition;
+ var inputNormalize = new Vector2((receivedData[i].x - 213.33f)/ 213.33f, receivedData[i].y / 480);
+ if (i == 0)
+ {
+ var input = new Vector2
+ {
+ x = Mathf.Lerp(0, _canvas.pixelRect.width, inputNormalize.x),
+ y = -Mathf.Lerp(0, _canvas.pixelRect.height, inputNormalize.y)
+ };
+ if (input != Vector2.zero)
+ {
+ var mousePos = input;
+ var pos = _camera.ScreenToWorldPoint(mousePos);
+ var currentPosition = _basket.Position;
+ pos.x *= -1;
+ pos.y = currentPosition.y;
+ pos.z = 0;
+ currentPosition= Vector3.Lerp(currentPosition, pos, _lerp * Time.deltaTime);
+ currentPosition.x = Mathf.Clamp(currentPosition.x, -2.25f, 2.25f);
+ var dirMove = (_preFramePosition - currentPosition).normalized;
+ _basket.transform.DORotate(new Vector3(0, 0, 10 * dirMove.x), 0.2f);
+ _basket.Position = currentPosition;
+ }
+ }
+
+ // var pos_pose = new Vector2();
+ // var x = Mathf.Clamp01(receivedData[i].x / 640);
+ // var y = Mathf.Clamp01(receivedData[i].y / 480);
+
+ // pos_pose.x = x;
+ // pos_pose.y = y;
+
+ // Objects[i].localPosition = pos_pose * -1;
}
+
}
public async void ShowTutorial()
diff --git a/Assets/GadGame/Scripts/Network/ReceiverData.cs b/Assets/GadGame/Scripts/Network/ReceiverData.cs
index 52fb854..3525776 100644
--- a/Assets/GadGame/Scripts/Network/ReceiverData.cs
+++ b/Assets/GadGame/Scripts/Network/ReceiverData.cs
@@ -18,6 +18,6 @@ namespace GadGame.Network
public float Gender;
public int AgeMin;
public int AgeMax;
- public Vector2 PosPoint;
+ public Vector2[] PosPoints;
}
}
\ No newline at end of file
diff --git a/Assets/GadGame/Scripts/PassByAnimation.cs b/Assets/GadGame/Scripts/PassByAnimation.cs
index 50a2cf6..84d480f 100644
--- a/Assets/GadGame/Scripts/PassByAnimation.cs
+++ b/Assets/GadGame/Scripts/PassByAnimation.cs
@@ -1,11 +1,12 @@
+using System.Collections;
+using Cysharp.Threading.Tasks;
using DG.Tweening;
-using GadGame.Network;
using GadGame.Singleton;
-using Microsoft.Unity.VisualStudio.Editor;
using Sirenix.OdinInspector;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
+using UnityEngine.Video;
namespace GadGame.State.MainFlowState
{
@@ -13,16 +14,37 @@ namespace GadGame.State.MainFlowState
{
public Animator passBy;
[SerializeField] private RectTransform _transform;
- [SerializeField] private UnityEngine.UI.Image CircleImg;
+ // [SerializeField] private RectTransform _videoIdleTransform;
+ [SerializeField] private Image CircleImg;
[SerializeField] private TextMeshProUGUI txtProgress;
- // [SerializeField] [Range(0,1)] float progress = 1f;
-
+ [SerializeField] private VideoPlayer videoPlayer;
[Button]
public void Play(bool engage) {
- _transform.DOAnchorPosX(engage ? -1000 : 0, 2);
+ // videoPlayer.gameObject.SetActive(!passBy);
+ _transform.DOAnchorPosX(engage ? -1000 : 0, 1);
}
+ public async void SetPlayVideo(bool value){
+ if(value) {
+ while (videoPlayer.targetCameraAlpha < 1)
+ {
+ videoPlayer.targetCameraAlpha += Time.deltaTime * 3;
+ await UniTask.Yield();
+ }
+
+ videoPlayer.targetCameraAlpha = 1;
+ } else {
+ while (videoPlayer.targetCameraAlpha > 0)
+ {
+ videoPlayer.targetCameraAlpha -= Time.deltaTime * 3;
+ await UniTask.Yield();
+ }
+
+ videoPlayer.targetCameraAlpha = 0;
+ }
+ }
+
public void ReadyCountDown(float progress){
CircleImg.fillAmount = progress ;
txtProgress.text = Mathf.Floor(progress * 3).ToString();
diff --git a/Assets/GadGame/Scripts/State/MainFlowState/CTAState.cs b/Assets/GadGame/Scripts/State/MainFlowState/CTAState.cs
index f5419f7..3847a64 100644
--- a/Assets/GadGame/Scripts/State/MainFlowState/CTAState.cs
+++ b/Assets/GadGame/Scripts/State/MainFlowState/CTAState.cs
@@ -1,6 +1,5 @@
using GadGame.Manager;
using GadGame.Network;
-using UnityEngine;
namespace GadGame.State.MainFlowState
{
@@ -13,7 +12,7 @@ namespace GadGame.State.MainFlowState
} else if (UdpSocket.Instance.DataReceived.Gender >= 0.7f){
LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.CTASceneFemale.ScenePath);
} else {
- LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.CTASceneBoth.ScenePath);
+ LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.CTASceneFemale.ScenePath);
}
}
@@ -23,18 +22,8 @@ namespace GadGame.State.MainFlowState
if (time >= 10)
{
- if(!UdpSocket.Instance.DataReceived.PassBy)
- {
- Runner.SetState();
- return;
- }
-
- if(!UdpSocket.Instance.DataReceived.Engage)
- {
- Runner.SetState();
- return;
- }
- Runner.SetState();
+ LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.PassByScene.ScenePath);
+ Runner.SetState();
}
}
diff --git a/Assets/GadGame/Scripts/State/MainFlowState/EngageState.cs b/Assets/GadGame/Scripts/State/MainFlowState/EngageState.cs
index bf82491..efd7fcd 100644
--- a/Assets/GadGame/Scripts/State/MainFlowState/EngageState.cs
+++ b/Assets/GadGame/Scripts/State/MainFlowState/EngageState.cs
@@ -1,5 +1,6 @@
using GadGame.Manager;
using GadGame.Network;
+using Unity.Mathematics;
using UnityEngine;
namespace GadGame.State.MainFlowState
@@ -10,57 +11,36 @@ namespace GadGame.State.MainFlowState
private bool _warned;
private bool _showCountDown;
- private PassByAnimation passByAnim;
-
public override void Enter()
{
- passByAnim = PassByAnimation.Instance;
- passByAnim.Play(true);
// LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.EndGageScene.ScenePath);
+ PassByAnimation.Instance.Play(true);
_readyTimer = 5;
}
public override void Update(float time)
{
+ if(!UdpSocket.Instance.DataReceived.PassBy) {
+ Runner.SetState();
+ return;
+ }
+
+ if(!UdpSocket.Instance.DataReceived.Engage) {
+ Runner.SetState();
+ return;
+ }
+
+ if (!UdpSocket.Instance.DataReceived.Ready) _readyTimer = 3;
+ PassByAnimation.Instance.ReadyCountDown(_readyTimer / 3);
+ _readyTimer -= Time.deltaTime;
+ if (_readyTimer <= 0)
+ {
+ _readyTimer = 0;
+ Runner.SetState();
+ }
if (time >= 2)
{
- switch (_warned)
- {
- case true when !UdpSocket.Instance.DataReceived.PassBy:
- Runner.SetState();
- break;
- case false when !UdpSocket.Instance.DataReceived.Engage:
- _warned = true;
- passByAnim.Play(false);
- // PopupManager.Instance.Show("Come Back", 5).OnComplete(OnWaringComplete);
- break;
- case true when UdpSocket.Instance.DataReceived.Engage:
- _warned = false;
- passByAnim.Play(true);
- // PopupManager.Instance.Hide();
- break;
- }
-
- switch (_showCountDown)
- {
- case false when UdpSocket.Instance.DataReceived.Ready:
- _showCountDown = true;
- // Runner.Ready(true);
- break;
- case true when !UdpSocket.Instance.DataReceived.Ready:
- _showCountDown = false;
- // Runner.Ready(false);
- break;
- }
- if (!UdpSocket.Instance.DataReceived.Ready) _readyTimer = 3;
- passByAnim.ReadyCountDown(_readyTimer / 3);
- _readyTimer -= Time.deltaTime;
- if (_readyTimer <= 0)
- {
- _readyTimer = 0;
- Runner.SetState();
- }
// Runner.ReadyCountDown(_readyTimer);
}
diff --git a/Assets/GadGame/Scripts/State/MainFlowState/IdleState.cs b/Assets/GadGame/Scripts/State/MainFlowState/IdleState.cs
index 60028a7..f21406c 100644
--- a/Assets/GadGame/Scripts/State/MainFlowState/IdleState.cs
+++ b/Assets/GadGame/Scripts/State/MainFlowState/IdleState.cs
@@ -1,19 +1,22 @@
+using System.Diagnostics;
using GadGame.Manager;
using GadGame.Network;
+using UnityEngine.SceneManagement;
namespace GadGame.State.MainFlowState
{
public class IdleState : State
{
-
+
public override void Enter()
{
- LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.IdleScene.ScenePath);
+ PassByAnimation.Instance.Play(false);
+ PassByAnimation.Instance.SetPlayVideo(true);
}
public override void Update(float time)
{
- if(time < 2) return;
+ // if(time < 2) return;
if (UdpSocket.Instance.DataReceived.PassBy)
{
@@ -35,7 +38,7 @@ namespace GadGame.State.MainFlowState
public override void Exit()
{
-
+ PassByAnimation.Instance.SetPlayVideo(false);
}
}
}
\ No newline at end of file
diff --git a/Assets/GadGame/Scripts/State/MainFlowState/PassByState.cs b/Assets/GadGame/Scripts/State/MainFlowState/PassByState.cs
index 6c55fe4..d551ac5 100644
--- a/Assets/GadGame/Scripts/State/MainFlowState/PassByState.cs
+++ b/Assets/GadGame/Scripts/State/MainFlowState/PassByState.cs
@@ -7,35 +7,27 @@ namespace GadGame.State.MainFlowState
{
public class PassByState : State
{
- private PassByAnimation passByAnim;
public async override void Enter()
{
- await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.PassByScene.ScenePath);
- passByAnim = PassByAnimation.Instance;
- passByAnim.Play(false);
+ // await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.PassByScene.ScenePath);
+ PassByAnimation.Instance.Play(false);
}
public override void Update(float time)
{
- if (time < 2f) return;
+ // if(time < 2) return;
if (!UdpSocket.Instance.DataReceived.PassBy)
{
Runner.SetState();
return;
}
-
+
if (UdpSocket.Instance.DataReceived.Engage)
{
Runner.SetState();
return;
}
-
- // if (UdpSocket.Instance.DataReceived.OnVision)
- // {
- // Runner.SetState();
- // return;
- // }
}
public override void Exit()
diff --git a/Assets/GadGame/Scripts/State/MainFlowState/PlayGameState.cs b/Assets/GadGame/Scripts/State/MainFlowState/PlayGameState.cs
index 897f0d6..d0a10c8 100644
--- a/Assets/GadGame/Scripts/State/MainFlowState/PlayGameState.cs
+++ b/Assets/GadGame/Scripts/State/MainFlowState/PlayGameState.cs
@@ -60,14 +60,10 @@ namespace GadGame.State.MainFlowState
_gameManager.Resume();
if(!UdpSocket.Instance.DataReceived.PassBy)
{
- Runner.SetState();
+ Runner.SetState();
return;
}
- // if(!UdpSocket.Instance.DataReceived.OnVision)
- // {
- // Runner.SetState();
- // return;
- // }
+
if(!UdpSocket.Instance.DataReceived.Engage)
{
Runner.SetState();
diff --git a/Assets/GadGame/Scripts/State/StateRunner.cs b/Assets/GadGame/Scripts/State/StateRunner.cs
index 81da28b..8c7f000 100644
--- a/Assets/GadGame/Scripts/State/StateRunner.cs
+++ b/Assets/GadGame/Scripts/State/StateRunner.cs
@@ -66,8 +66,8 @@ namespace GadGame.State
var newState = _states.FirstOrDefault(s => s is TSt);
if(newState == null) return;
+ newState.Enter();
ActiveState = newState;
- ActiveState.Enter();
_timer = 0;
}
}
diff --git a/Assets/Plugins/Febucci.meta b/Assets/Plugins/Febucci.meta
new file mode 100644
index 0000000..8c43f36
--- /dev/null
+++ b/Assets/Plugins/Febucci.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 766a79cc4c72adc929ac7638a34e1b15
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator.meta b/Assets/Plugins/Febucci/Text Animator.meta
new file mode 100644
index 0000000..177296e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c3c851caa99d03d4a8c8842ded166a7c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes.meta b/Assets/Plugins/Febucci/Text Animator/Attributes.meta
new file mode 100644
index 0000000..f0293eb
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: da631c92e6b893e49acea17d69d48252
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor.meta
new file mode 100644
index 0000000..61dd651
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 001402f99874ca24780daf2947cf5e14
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs
new file mode 100644
index 0000000..f975e04
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs
@@ -0,0 +1,66 @@
+using UnityEngine;
+using UnityEditor;
+
+namespace Febucci.Attributes
+{
+ [CustomPropertyDrawer(typeof(CharsDisplayTimeAttribute))]
+ public class CharsDisplayTimeAttributeDrawer : PropertyDrawer
+ {
+ const float minWaitTime = 0.0001f;
+
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ //delay in seconds
+ Rect delayValueRect = new Rect(position.x, position.y, 70 + 230 - position.x, position.height);
+ delayValueRect.width = Mathf.Clamp(position.width * 0.6f, 170, position.width);
+
+ Rect delayLabel = new Rect(delayValueRect);
+ delayLabel.x += delayLabel.width - 15;
+ delayLabel.width = 77;
+
+ Rect charPerSecValueRect = new Rect(delayLabel);
+ charPerSecValueRect.x += charPerSecValueRect.width - 15;
+ charPerSecValueRect.width = 65;
+
+
+ Rect charPerSecLabelRect = new Rect(charPerSecValueRect);
+ charPerSecLabelRect.x += charPerSecLabelRect.width - 15;
+ charPerSecLabelRect.width = 120;
+
+ switch (property.propertyType)
+ {
+ case SerializedPropertyType.Float:
+
+ property.floatValue = EditorGUI.FloatField(delayValueRect, label, property.floatValue);
+
+ EditorGUI.LabelField(delayLabel, $"s delay, ≈");
+
+
+
+ int charPerSecond = Mathf.RoundToInt(1 / property.floatValue);
+
+ EditorGUI.LabelField(charPerSecLabelRect, "chars per sec");
+ EditorGUI.BeginChangeCheck();
+ charPerSecond = EditorGUI.IntField(charPerSecValueRect, charPerSecond);
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ property.floatValue = 1f/charPerSecond;
+ }
+
+ if (property.floatValue < minWaitTime)
+ property.floatValue = minWaitTime;
+
+ break;
+
+
+ default: //unsupported, fallback to the default OnGUI
+ EditorGUI.PropertyField(position, property, label);
+ return;
+ }
+
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs.meta
new file mode 100644
index 0000000..975987c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 06ce1d00801daba44918ac07070012a3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef
new file mode 100644
index 0000000..7b2a8e3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef
@@ -0,0 +1,18 @@
+{
+ "name": "Febucci.Attributes.Editor",
+ "rootNamespace": "",
+ "references": [
+ "GUID:448b0b55421917e4784a8f2f7449081f"
+ ],
+ "includePlatforms": [
+ "Editor"
+ ],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef.meta
new file mode 100644
index 0000000..60e8dd3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: fbcceeb83a7197e40b5e481f8eeb8508
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs
new file mode 100644
index 0000000..92bdcc1
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs
@@ -0,0 +1,30 @@
+using UnityEngine;
+using UnityEditor;
+
+namespace Febucci.Attributes
+{
+ [CustomPropertyDrawer(typeof(MinValueAttribute))]
+ public class MinValueAttributeDrawer : PropertyDrawer
+ {
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ EditorGUI.PropertyField(position, property, label);
+ switch (property.propertyType)
+ {
+ case SerializedPropertyType.Integer:
+ property.intValue = Mathf.Clamp(property.intValue, (int)(attribute as MinValueAttribute).min, int.MaxValue);
+ break;
+
+ case SerializedPropertyType.Float:
+ property.floatValue = Mathf.Clamp(property.floatValue, (attribute as MinValueAttribute).min, float.MaxValue);
+ break;
+
+ default:
+ base.OnGUI(position, property, label);
+ break;
+ }
+
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs.meta
new file mode 100644
index 0000000..7419d47
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d6969374730fb584ea155e370491caf1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs
new file mode 100644
index 0000000..7a43dd8
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs
@@ -0,0 +1,49 @@
+using UnityEngine;
+using UnityEditor;
+
+namespace Febucci.Attributes
+{
+ [CustomPropertyDrawer(typeof(NotZeroAttribute))]
+ public class NotZeroAttributeDrawer : PropertyDrawer
+ {
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+
+ switch (property.propertyType)
+ {
+ case SerializedPropertyType.Integer:
+ int intValue = property.intValue;
+ intValue = EditorGUI.IntField(position, label, intValue);
+ if (intValue != 0)
+ property.intValue = intValue;
+ break;
+
+ case SerializedPropertyType.Float:
+ float floatValue = property.floatValue;
+ floatValue = EditorGUI.FloatField(position, label, floatValue);
+
+ if (floatValue != 0)
+ property.floatValue = floatValue;
+
+ break;
+
+ case SerializedPropertyType.Vector2:
+ Vector2 vecValue = property.vector2Value;
+ vecValue = EditorGUI.Vector2Field(position, label, vecValue);
+
+ property.vector2Value = new Vector2(
+ (vecValue.x != 0 || vecValue.y!=0) ? vecValue.x : property.vector2Value.x,
+ (vecValue.y != 0 || vecValue.x!=0) ? vecValue.y : property.vector2Value.y);
+
+ break;
+
+
+ default:
+ base.OnGUI(position, property, label);
+ break;
+ }
+
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs.meta
new file mode 100644
index 0000000..d9d6c6c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 319c5abbdd9c94e479d7c58013da0a7a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs
new file mode 100644
index 0000000..e34f1a3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs
@@ -0,0 +1,47 @@
+using UnityEngine;
+using UnityEditor;
+
+namespace Febucci.Attributes
+{
+ [CustomPropertyDrawer(typeof(PositiveValueAttribute))]
+ public class PositiveValueAttributeDrawer : PropertyDrawer
+ {
+ const float minValue = .01f;
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+
+ switch (property.propertyType)
+ {
+ case SerializedPropertyType.Integer:
+ int intValue = property.intValue;
+ intValue = EditorGUI.IntField(position, label, intValue);
+ if (intValue >= minValue)
+ property.intValue = intValue;
+ break;
+
+ case SerializedPropertyType.Float:
+ float floatValue = property.floatValue;
+ floatValue = EditorGUI.FloatField(position, label, floatValue);
+
+ property.floatValue = Mathf.Clamp(floatValue, minValue, floatValue);
+ break;
+
+ case SerializedPropertyType.Vector2:
+ Vector2 vecValue = property.vector2Value;
+ vecValue = EditorGUI.Vector2Field(position, label, vecValue);
+
+ vecValue.x = Mathf.Clamp(vecValue.x, minValue, vecValue.x);
+ vecValue.y = Mathf.Clamp(vecValue.y, minValue, vecValue.y);
+
+ property.vector2Value = vecValue;
+ break;
+
+ default:
+ base.OnGUI(position, property, label);
+ break;
+ }
+
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs.meta
new file mode 100644
index 0000000..ffb95cf
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f9574f1311c20a8418059bbedf619737
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime.meta
new file mode 100644
index 0000000..6a0d661
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c54a190a44816374899a417122886ada
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs
new file mode 100644
index 0000000..379614c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs
@@ -0,0 +1,9 @@
+using UnityEngine;
+
+namespace Febucci.Attributes
+{
+ public class CharsDisplayTimeAttribute : PropertyAttribute
+ {
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs.meta
new file mode 100644
index 0000000..ae69a8c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 17a442d7a8bcb7843a7b81ae4b6fcbaa
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef
new file mode 100644
index 0000000..bf8b236
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef
@@ -0,0 +1,14 @@
+{
+ "name": "Febucci.Attributes.Runtime",
+ "rootNamespace": "",
+ "references": [],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef.meta
new file mode 100644
index 0000000..d2ace58
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 448b0b55421917e4784a8f2f7449081f
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs
new file mode 100644
index 0000000..b01f415
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs
@@ -0,0 +1,14 @@
+using UnityEngine;
+
+namespace Febucci.Attributes
+{
+ public class MinValueAttribute : PropertyAttribute
+ {
+ public float min = 0;
+ public MinValueAttribute(float min)
+ {
+ this.min = min;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs.meta
new file mode 100644
index 0000000..d661541
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 15c1cd35897ccae4ea16b7d7bd05c74b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs
new file mode 100644
index 0000000..f009bd4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs
@@ -0,0 +1,10 @@
+using UnityEngine;
+
+namespace Febucci.Attributes
+{
+ public class NotZeroAttribute : PropertyAttribute
+ {
+
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs.meta
new file mode 100644
index 0000000..c44227b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 330d54a9b2a8cde41a7128d6f9418661
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs
new file mode 100644
index 0000000..4715bd4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs
@@ -0,0 +1,10 @@
+using UnityEngine;
+
+namespace Febucci.Attributes
+{
+ public class PositiveValueAttribute : PropertyAttribute
+ {
+
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs.meta
new file mode 100644
index 0000000..fb3d5e5
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2f12d9869f06b66498d39516b6e88aa7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data.meta b/Assets/Plugins/Febucci/Text Animator/Data.meta
new file mode 100644
index 0000000..54597c9
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 64096182da37e607291d723f6c861fee
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions.meta
new file mode 100644
index 0000000..7c83a3f
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c9c7916894dff634f98968d3ee28a9a6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset b/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset
new file mode 100644
index 0000000..e64272e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 975089f62a0f141b0b6c1e96bb49c873, type: 3}
+ m_Name: Actions Database
+ m_EditorClassIdentifier:
+ data:
+ - {fileID: 11400000, guid: bf4bdbc3b8f308d09915d845bb8add45, type: 2}
+ - {fileID: 11400000, guid: 95dbfc172929c069b889d2e360cfad2f, type: 2}
+ - {fileID: 11400000, guid: 9f8d00c4e2f2a02348224f1f3e7673ae, type: 2}
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset.meta
new file mode 100644
index 0000000..26ddba0
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0f78b267c3825f804a4727a8b68c329d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset b/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset
new file mode 100644
index 0000000..ad062e6
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 24451f867ad2a6146baf57f938a44d18, type: 3}
+ m_Name: SpeedAction
+ m_EditorClassIdentifier:
+ tagID: speed
+ defaultSpeed: 2
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset.meta
new file mode 100644
index 0000000..5730b7a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bf4bdbc3b8f308d09915d845bb8add45
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset
new file mode 100644
index 0000000..38761cf
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset
@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: aed6905e7c644c14a804ef32a5216aa3, type: 3}
+ m_Name: WaitAnyInputAction
+ m_EditorClassIdentifier:
+ tagID: waitinput
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset.meta
new file mode 100644
index 0000000..8026803
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 95dbfc172929c069b889d2e360cfad2f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset
new file mode 100644
index 0000000..320fdc5
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 7806fdd5903ae4a1b8ddb77cde0d5832, type: 3}
+ m_Name: WaitForAction
+ m_EditorClassIdentifier:
+ tagID: waitfor
+ defaultTime: 1
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset.meta
new file mode 100644
index 0000000..55fff21
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9f8d00c4e2f2a02348224f1f3e7673ae
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances.meta
new file mode 100644
index 0000000..b13f25d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 90b80a86f3dbb666891887f97cd9f52b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset
new file mode 100644
index 0000000..35b119b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset
@@ -0,0 +1,23 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 103e863f5c0347be8a512f431aaf5ec1, type: 3}
+ m_Name: Appearances Database
+ m_EditorClassIdentifier:
+ data:
+ - {fileID: 11400000, guid: 580868ca94914f3a5b4799e19bbd3085, type: 2}
+ - {fileID: 11400000, guid: 710e372fa4a13b1479b5e6d0a55db0c8, type: 2}
+ - {fileID: 11400000, guid: 7316dbc102f59da72978008734e90982, type: 2}
+ - {fileID: 11400000, guid: 5685734b8affc629680c1bbb91624508, type: 2}
+ - {fileID: 11400000, guid: ca89d2a16f2b8654ab5c938d2fe4ca84, type: 2}
+ - {fileID: 11400000, guid: 7dbe7206d95daeb80aaef048450d3d13, type: 2}
+ - {fileID: 11400000, guid: f85299684f332935b8ab73a6ff36a848, type: 2}
+ - {fileID: 11400000, guid: 6b3c952806296327f9e007418fb4cdab, type: 2}
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset.meta
new file mode 100644
index 0000000..7de60b2
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6f440ba43b95f6c7e90fa305a0bbda32
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset
new file mode 100644
index 0000000..092c734
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 7303246fad8e2a049aebd6c0c71d2985, type: 3}
+ m_Name: DiagonalExpandAppearance
+ m_EditorClassIdentifier:
+ tagID: diagexp
+ baseDuration: 0.5
+ diagonalFromBttmLeft: 0
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset.meta
new file mode 100644
index 0000000..7d3f9e0
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 580868ca94914f3a5b4799e19bbd3085
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset
new file mode 100644
index 0000000..7a4d195
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 6d26528e73e36f64dab95b69625232a7, type: 3}
+ m_Name: FadeAppearance
+ m_EditorClassIdentifier:
+ tagID: fade
+ baseDuration: 0.5
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset.meta
new file mode 100644
index 0000000..408f655
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 710e372fa4a13b1479b5e6d0a55db0c8
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset
new file mode 100644
index 0000000..d8926ec
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 3dbde6098d9bea441b3ac872e52073ba, type: 3}
+ m_Name: HorizontalExpandAppearance
+ m_EditorClassIdentifier:
+ tagID: horiexp
+ baseDuration: 0.5
+ type: 0
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset.meta
new file mode 100644
index 0000000..f8f416d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7316dbc102f59da72978008734e90982
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset
new file mode 100644
index 0000000..6a71275
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 146552007a93ecc42b0d63f26788e6cb, type: 3}
+ m_Name: OffsetAppearance
+ m_EditorClassIdentifier:
+ tagID: offset
+ baseDuration: 0.5
+ baseAmount: 10
+ baseDirection: {x: 1, y: 1}
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset.meta
new file mode 100644
index 0000000..48297fb
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5685734b8affc629680c1bbb91624508
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset
new file mode 100644
index 0000000..ea2c3fd
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 6a65a9b7775dded41a0295e6f75be25d, type: 3}
+ m_Name: RandomDirectionAppearance
+ m_EditorClassIdentifier:
+ tagID: rdir
+ baseDuration: 0.5
+ baseAmount: 10
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset.meta
new file mode 100644
index 0000000..223b9eb
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ca89d2a16f2b8654ab5c938d2fe4ca84
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset
new file mode 100644
index 0000000..6b93610
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 465a2951870a6954d8205f9c58a546de, type: 3}
+ m_Name: RotatingAppearance
+ m_EditorClassIdentifier:
+ tagID: rot
+ baseDuration: 0.7
+ baseTargetAngle: 50
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset.meta
new file mode 100644
index 0000000..fe9d862
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7dbe7206d95daeb80aaef048450d3d13
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset
new file mode 100644
index 0000000..0d34f42
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 5ff5882c38f1b6c4682c7f207f0c98db, type: 3}
+ m_Name: SizeAppearance
+ m_EditorClassIdentifier:
+ tagID: size
+ baseDuration: 0.5
+ baseAmplitude: 2
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset.meta
new file mode 100644
index 0000000..5b9709a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f85299684f332935b8ab73a6ff36a848
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset
new file mode 100644
index 0000000..f9523bb
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 351d9d9e5c9ea7946842aee1160f7731, type: 3}
+ m_Name: VerticalExpandAppearance
+ m_EditorClassIdentifier:
+ tagID: vertexp
+ baseDuration: 0.5
+ startsFromBottom: 1
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset.meta
new file mode 100644
index 0000000..e4491d3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6b3c952806296327f9e007418fb4cdab
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors.meta
new file mode 100644
index 0000000..9717522
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 07d1ecb778bb73bfbb89c1eddb804202
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset
new file mode 100644
index 0000000..84d6a88
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset
@@ -0,0 +1,27 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 103e863f5c0347be8a512f431aaf5ec1, type: 3}
+ m_Name: Behaviors Database
+ m_EditorClassIdentifier:
+ data:
+ - {fileID: 11400000, guid: 656a96850718f58f088b6f292e2437fe, type: 2}
+ - {fileID: 11400000, guid: 17f5322bade6132c9af4e88f9a2608dd, type: 2}
+ - {fileID: 11400000, guid: 7e93996a566440e0cb3a0bb99a5d24c7, type: 2}
+ - {fileID: 11400000, guid: 54e34e17bd344def4935c48b2c318c77, type: 2}
+ - {fileID: 11400000, guid: 74ee166c61550bc05b79c18b1f045558, type: 2}
+ - {fileID: 11400000, guid: b9dfc028dcb14496299bc95c2bfcce2c, type: 2}
+ - {fileID: 11400000, guid: 3312357f8bfb641fe9a1ef97387e9b7e, type: 2}
+ - {fileID: 11400000, guid: 5a4b74322b62c23e4ac0f1ed011ae2df, type: 2}
+ - {fileID: 11400000, guid: 64683658af55e22b2b00b4662f5d4fc5, type: 2}
+ - {fileID: 11400000, guid: 4025512822b51274db8dc40a8fbd2d12, type: 2}
+ - {fileID: 11400000, guid: e6c038789abd1bf0aae6cb1b2126a805, type: 2}
+ - {fileID: 11400000, guid: 59d46f00fa8da9799b72c7b9ee0a173a, type: 2}
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset.meta
new file mode 100644
index 0000000..d769fd3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d1ab346c8b166fe1babb05950e874fb1
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset
new file mode 100644
index 0000000..b65fb95
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: a333962955c4a08498d132d86d9ce19e, type: 3}
+ m_Name: BounceBehavior
+ m_EditorClassIdentifier:
+ tagID: bounce
+ baseAmplitude: 2
+ baseFrequency: 1
+ baseWaveSize: 0.05
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset.meta
new file mode 100644
index 0000000..861db06
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 656a96850718f58f088b6f292e2437fe
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset
new file mode 100644
index 0000000..312e23b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 01a91f0b9c670b242ae5c34286409cd9, type: 3}
+ m_Name: DangleBehavior
+ m_EditorClassIdentifier:
+ tagID: dangle
+ baseAmplitude: 7.87
+ baseFrequency: 3.37
+ baseWaveSize: 0.306
+ anchorBottom: 0
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset.meta
new file mode 100644
index 0000000..b40f576
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 17f5322bade6132c9af4e88f9a2608dd
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset
new file mode 100644
index 0000000..9884468
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: d1f1dde3a46b6e748885a8d202c32044, type: 3}
+ m_Name: FadeBehavior
+ m_EditorClassIdentifier:
+ tagID: fade
+ baseSpeed: 0.5
+ baseDelay: 1
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset.meta
new file mode 100644
index 0000000..5054d3f
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7e93996a566440e0cb3a0bb99a5d24c7
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset
new file mode 100644
index 0000000..82bb9f1
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 5005fc4984831834d826c8a9e3d42443, type: 3}
+ m_Name: PendulumBehavior
+ m_EditorClassIdentifier:
+ tagID: pend
+ baseAmplitude: 24.7
+ baseFrequency: 3.1
+ baseWaveSize: 0.2
+ anchorBottom: 0
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset.meta
new file mode 100644
index 0000000..59e5c6c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 54e34e17bd344def4935c48b2c318c77
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset
new file mode 100644
index 0000000..d39b5e2
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 5400420051c0a9341be4aece65080148, type: 3}
+ m_Name: RainbowBehavior
+ m_EditorClassIdentifier:
+ tagID: rainb
+ baseFrequency: 0.5
+ baseWaveSize: 0.08
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset.meta
new file mode 100644
index 0000000..8a43c7b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 74ee166c61550bc05b79c18b1f045558
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset
new file mode 100644
index 0000000..f77fa84
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: c179eec3e2795104eb216e340b8d8513, type: 3}
+ m_Name: RotationBehavior
+ m_EditorClassIdentifier:
+ tagID: rot
+ baseRotSpeed: 180
+ baseDiffBetweenChars: 10
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset.meta
new file mode 100644
index 0000000..30ea32e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b9dfc028dcb14496299bc95c2bfcce2c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset
new file mode 100644
index 0000000..b02c22a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 144066a43449f48469b89b2e2c9ab37d, type: 3}
+ m_Name: ShakeBehavior
+ m_EditorClassIdentifier:
+ tagID: shake
+ baseAmplitude: 1.13
+ baseDelay: 0.1
+ baseWaveSize: 0.45
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset.meta
new file mode 100644
index 0000000..fd289dc
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3312357f8bfb641fe9a1ef97387e9b7e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset
new file mode 100644
index 0000000..a447064
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 6da0c21b80efda84188912ce510ee1ca, type: 3}
+ m_Name: SizeBehavior
+ m_EditorClassIdentifier:
+ tagID: incr
+ baseAmplitude: 1.5
+ baseFrequency: 4
+ baseWaveSize: 0.2
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset.meta
new file mode 100644
index 0000000..752641a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5a4b74322b62c23e4ac0f1ed011ae2df
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset
new file mode 100644
index 0000000..515aede
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: a740b03d4c3f2d84f9cfc7b3a6f8ea80, type: 3}
+ m_Name: SlideBehavior
+ m_EditorClassIdentifier:
+ tagID: slide
+ baseAmplitude: 5
+ baseFrequency: 3
+ baseWaveSize: 0
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset.meta
new file mode 100644
index 0000000..fb051d2
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 64683658af55e22b2b00b4662f5d4fc5
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset
new file mode 100644
index 0000000..8288636
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 63b7822b5552d3748b1acc2a07066822, type: 3}
+ m_Name: SwingBehavior
+ m_EditorClassIdentifier:
+ tagID: swing
+ baseAmplitude: 22.74
+ baseFrequency: 3.65
+ baseWaveSize: 0.171
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset.meta
new file mode 100644
index 0000000..ee13dc4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4025512822b51274db8dc40a8fbd2d12
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset
new file mode 100644
index 0000000..42b7dfa
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 99de7ce7cdaed2d42b0bd233e69e67db, type: 3}
+ m_Name: WaveBehavior
+ m_EditorClassIdentifier:
+ tagID: wave
+ baseAmplitude: 7.27
+ baseFrequency: 4
+ baseWaveSize: 0.4
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset.meta
new file mode 100644
index 0000000..cb46bca
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e6c038789abd1bf0aae6cb1b2126a805
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset
new file mode 100644
index 0000000..363541c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 7c98870d7ebce9a4fa6c4a16e9701755, type: 3}
+ m_Name: WiggleBehavior
+ m_EditorClassIdentifier:
+ tagID: wiggle
+ baseAmplitude: 4.74
+ baseFrequency: 7.82
+ baseWaveSize: 0.551
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset.meta
new file mode 100644
index 0000000..861ef2b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 59d46f00fa8da9799b72c7b9ee0a173a
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset b/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset
new file mode 100644
index 0000000..7a9b544
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset
@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 9e2a5ebb2c224910b14d053825d88b4a, type: 3}
+ m_Name: InstallationData
+ m_EditorClassIdentifier:
+ latestVersion: 2.0.2
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset.meta
new file mode 100644
index 0000000..e7cecde
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 73ab873d250d751aea5c0919aa4c705f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Resources.meta b/Assets/Plugins/Febucci/Text Animator/Data/Resources.meta
new file mode 100644
index 0000000..9ee2b9c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Resources.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d474c1e8238ea1a8baa2013d00d82747
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset b/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset
new file mode 100644
index 0000000..98befbd
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset
@@ -0,0 +1,29 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !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: 9743a50feedea474dbef99517d3e30eb, type: 3}
+ m_Name: TextAnimatorSettings
+ m_EditorClassIdentifier:
+ behaviors:
+ defaultDatabase: {fileID: 11400000, guid: d1ab346c8b166fe1babb05950e874fb1, type: 2}
+ enabled: 1
+ openingSymbol: 60
+ closingSymbol: 62
+ appearances:
+ defaultDatabase: {fileID: 11400000, guid: 6f440ba43b95f6c7e90fa305a0bbda32, type: 2}
+ enabled: 1
+ openingSymbol: 123
+ closingSymbol: 125
+ actions:
+ defaultDatabase: {fileID: 11400000, guid: 0f78b267c3825f804a4727a8b68c329d, type: 2}
+ enabled: 1
+ openingSymbol: 60
+ closingSymbol: 62
diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset.meta
new file mode 100644
index 0000000..d925649
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 35ca45d2ae32867448befbe9ae946a1c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example.meta b/Assets/Plugins/Febucci/Text Animator/Example.meta
new file mode 100644
index 0000000..1881d16
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 85011d1648ca8914cb0fc9500772569f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity b/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity
new file mode 100644
index 0000000..72eafc4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity
@@ -0,0 +1,535 @@
+%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: 3
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ 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: 0
+ 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: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 49d28ee43fb9747d884ba6ecfade7616,
+ type: 2}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &519420028
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 519420032}
+ - component: {fileID: 519420031}
+ - component: {fileID: 519420029}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+--- !u!20 &519420031
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 4.15
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 0
+ m_HDR: 1
+ m_AllowMSAA: 0
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 0
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: -0.62, z: -10}
+ 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!1 &903061070
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 903061074}
+ - component: {fileID: 903061073}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!223 &903061073
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_AdditionalShaderChannelsFlag: 25
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &903061074
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_Children:
+ - {fileID: 1911804838}
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ 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!1 &1911804837
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1911804838}
+ - component: {fileID: 1911804840}
+ - component: {fileID: 1911804839}
+ - component: {fileID: 1911804841}
+ - component: {fileID: 1911804842}
+ m_Layer: 5
+ m_Name: Text (TMP)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1911804838
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 903061074}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 2.5, y: 0}
+ m_SizeDelta: {x: -84.9, y: -80.2}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1911804839
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 'Hi! Welcome to TextAnimator; have fun bringing your dialogues to life!
+
+
+ Examples:
+
+ I''m
+ freezing.
+
+ I''m joking.
+
+ It''s a secret.
+
+ Oh,
+ how lucky.
+
+ I''m confused.
+
+ So happy right
+ now.
+
+ Head over the next example scenes to discover more!
+
+
+ I''d
+ love to share the projects you create with TextAnimator! Let me know (if you
+ want) aand have a lovely day! ^^
+
+ Aaaaaaaaaaaaaand please do not
+ forget to leave a review, it really helps
+ ^^'
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2}
+ m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4278190080
+ m_fontColor: {r: 0, g: 0, b: 0, a: 1}
+ m_enableVertexGradient: 1
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 61.6
+ m_fontSizeBase: 53.61
+ m_fontWeight: 400
+ m_enableAutoSizing: 1
+ m_fontSizeMin: 15.56
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 29
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 1
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1911804840
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_CullTransparentMesh: 0
+--- !u!114 &1911804841
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ typewriterStartsAutomatically: 1
+ animationLoop: 0
+ timeScale: 0
+ _text: 'Hi! Welcome to TextAnimator; have fun bringing your dialogues to life!
+
+
+ Examples:
+
+ I''m
+ freezing.
+
+ I''m joking.
+
+ It''s a secret.
+
+ Oh,
+ how lucky.
+
+ An EXPLOSION.
+
+ I''m confused.
+
+ So
+ happy right now.
+
+ Head over the next example scenes to discover more!
+
+
+ I''d
+ love to share the projects you create with TextAnimator! Let me know (if you
+ want) aand have a lovely day! ^^
+
+ Aaaaaaaaaaaaaand please
+ do not forget to leave a review, it really
+ helps ^^'
+ useDynamicScaling: 1
+ referenceFontSize: 5
+ isResettingTimeOnNewText: 1
+ useDefaultDatabases: 1
+ databaseBehaviors: {fileID: 11400000, guid: 143063c9d42da4bb3bdef3e969df1633, type: 2}
+ databaseAppearances: {fileID: 11400000, guid: efcefe34ffbda4c5eb7e39d858738fbc,
+ type: 2}
+ databaseActions: {fileID: 11400000, guid: 59963a936d6fb4257a79cffca6bafcbb, type: 2}
+ defaultAppearancesTags:
+ - size
+ defaultDisappearancesTags: []
+ defaultBehaviorsTags: []
+ defaultTagsMode: 0
+--- !u!114 &1911804842
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useTypeWriter: 1
+ startTypewriterMode: 3
+ hideAppearancesOnSkip: 0
+ triggerEventsOnSkip: 0
+ resetTypingSpeedAtStartup: 1
+ disappearanceOrientation: 0
+ onTextShowed:
+ m_PersistentCalls:
+ m_Calls: []
+ onTypewriterStart:
+ m_PersistentCalls:
+ m_Calls: []
+ onTextDisappeared:
+ m_PersistentCalls:
+ m_Calls: []
+ onCharacterVisible:
+ m_PersistentCalls:
+ m_Calls: []
+ onMessage:
+ m_PersistentCalls:
+ m_Calls: []
+ waitForNormalChars: 0.02
+ waitLong: 0.33333334
+ waitMiddle: 0.06666667
+ avoidMultiplePunctuactionWait: 0
+ waitForNewLines: 1
+ waitForLastCharacter: 1
+ useTypewriterWaitForDisappearances: 1
+ disappearanceWaitTime: 0.015
+ disappearanceSpeedMultiplier: 1
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity.meta
new file mode 100644
index 0000000..90037ed
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 6eaf322d703d50146afecde586026f57
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity
new file mode 100644
index 0000000..04eee01
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity
@@ -0,0 +1,639 @@
+%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: 3
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ 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: 0
+ 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: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 2011447538}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &333414662
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 333414663}
+ m_Layer: 0
+ m_Name: ---------------------
+ m_TagString: EditorOnly
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &333414663
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 333414662}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &349547107
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 349547109}
+ - component: {fileID: 349547108}
+ m_Layer: 0
+ m_Name: Manager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &349547108
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 349547107}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b97a825c489d94194a088dd18fedd2f0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ typewriter: {fileID: 1911804841}
+--- !u!4 &349547109
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 349547107}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.50578886, y: -0.5419356, z: -3.6875}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &519420028
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 519420032}
+ - component: {fileID: 519420031}
+ - component: {fileID: 519420029}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+--- !u!20 &519420031
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 4.15
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 0
+ m_HDR: 1
+ m_AllowMSAA: 0
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 0
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: -0.62, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &903061070
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 903061074}
+ - component: {fileID: 903061073}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!223 &903061073
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_AdditionalShaderChannelsFlag: 25
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &903061074
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_Children:
+ - {fileID: 1911804838}
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ 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!1 &923047835
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 923047836}
+ m_Layer: 0
+ m_Name: ---------------------
+ m_TagString: EditorOnly
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &923047836
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923047835}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1911804837
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1911804838}
+ - component: {fileID: 1911804840}
+ - component: {fileID: 1911804839}
+ - component: {fileID: 1911804842}
+ - component: {fileID: 1911804841}
+ m_Layer: 5
+ m_Name: Text (TMP)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1911804838
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 903061074}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 2.5, y: 0}
+ m_SizeDelta: {x: -363.9, y: -506.8}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1911804839
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: Press play to watch the text animate
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2}
+ m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4278190080
+ m_fontColor: {r: 0, g: 0, b: 0, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 72
+ m_fontSizeBase: 28.3
+ m_fontWeight: 400
+ m_enableAutoSizing: 1
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 1
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1911804840
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_CullTransparentMesh: 0
+--- !u!114 &1911804841
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useTypeWriter: 1
+ startTypewriterMode: 3
+ hideAppearancesOnSkip: 0
+ triggerEventsOnSkip: 0
+ resetTypingSpeedAtStartup: 1
+ disappearanceOrientation: 0
+ onTextShowed:
+ m_PersistentCalls:
+ m_Calls: []
+ onTypewriterStart:
+ m_PersistentCalls:
+ m_Calls: []
+ onTextDisappeared:
+ m_PersistentCalls:
+ m_Calls: []
+ onCharacterVisible:
+ m_PersistentCalls:
+ m_Calls: []
+ onMessage:
+ m_PersistentCalls:
+ m_Calls: []
+ waitForNormalChars: 0.02
+ waitLong: 0.6
+ waitMiddle: 0.2
+ avoidMultiplePunctuactionWait: 0
+ waitForNewLines: 1
+ waitForLastCharacter: 1
+ useTypewriterWaitForDisappearances: 1
+ disappearanceWaitTime: 0.015
+ disappearanceSpeedMultiplier: 1
+--- !u!114 &1911804842
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ typewriterStartsAutomatically: 0
+ animationLoop: 0
+ timeScale: 0
+ _text:
+ useDynamicScaling: 1
+ referenceFontSize: 40
+ isResettingTimeOnNewText: 1
+ useDefaultDatabases: 1
+ databaseBehaviors: {fileID: 11400000, guid: 143063c9d42da4bb3bdef3e969df1633, type: 2}
+ databaseAppearances: {fileID: 11400000, guid: efcefe34ffbda4c5eb7e39d858738fbc,
+ type: 2}
+ databaseActions: {fileID: 11400000, guid: 59963a936d6fb4257a79cffca6bafcbb, type: 2}
+ defaultAppearancesTags:
+ - size
+ defaultDisappearancesTags: []
+ defaultBehaviorsTags: []
+ defaultTagsMode: 0
+--- !u!850595691 &2011447538
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Settings.lighting
+ serializedVersion: 3
+ m_GIWorkflowMode: 1
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 0
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 40
+ m_Padding: 2
+ m_TextureCompression: 1
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRMinBounces: 2
+ m_PVREnvironmentMIS: 0
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity.meta
new file mode 100644
index 0000000..7f2c5aa
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 33f73b8875f94f64b867105f5c7d4747
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity
new file mode 100644
index 0000000..7072f16
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity
@@ -0,0 +1,650 @@
+%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: 3
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ 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: 0
+ 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: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 567283253}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &333414662
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 333414663}
+ m_Layer: 0
+ m_Name: ---------------------
+ m_TagString: EditorOnly
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &333414663
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 333414662}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &349547107
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 349547109}
+ - component: {fileID: 349547108}
+ m_Layer: 0
+ m_Name: Formatted Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &349547108
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 349547107}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 65cd2c622bcc2df47813a20bb2263361, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ textAnimatorPlayer: {fileID: 1911804841}
+ textToShow: 'You can use multiple> effects on the same>
+ letters. YAY!>
+
+
+ Example: writing "HEEEEY>"
+ will result in "HEEEEY>".
+
+
+ [Tip: if you have opened
+ multiple tags, you can use > or {/} to close all of them
+ at once, instead of writing each single tag.]'
+--- !u!4 &349547109
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 349547107}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.50578886, y: -0.5419356, z: -3.6875}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &519420028
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 519420032}
+ - component: {fileID: 519420031}
+ - component: {fileID: 519420029}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+--- !u!20 &519420031
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 4.15
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 0
+ m_HDR: 1
+ m_AllowMSAA: 0
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 0
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: -0.62, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!850595691 &567283253
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Settings.lighting
+ serializedVersion: 3
+ m_GIWorkflowMode: 1
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 0
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 40
+ m_Padding: 2
+ m_TextureCompression: 1
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRMinBounces: 2
+ m_PVREnvironmentMIS: 0
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+--- !u!1 &903061070
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 903061074}
+ - component: {fileID: 903061073}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!223 &903061073
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_AdditionalShaderChannelsFlag: 25
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &903061074
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_Children:
+ - {fileID: 1911804838}
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ 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!1 &923047835
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 923047836}
+ m_Layer: 0
+ m_Name: ---------------------
+ m_TagString: EditorOnly
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &923047836
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923047835}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1911804837
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1911804838}
+ - component: {fileID: 1911804840}
+ - component: {fileID: 1911804839}
+ - component: {fileID: 1911804842}
+ - component: {fileID: 1911804841}
+ m_Layer: 5
+ m_Name: Text (TMP)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1911804838
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 903061074}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 2.5, y: 0}
+ m_SizeDelta: {x: -84.9, y: -506.8}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1911804839
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: Press Play to watch how to stack effects on top of each other.
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2}
+ m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4278190080
+ m_fontColor: {r: 0, g: 0, b: 0, a: 1}
+ m_enableVertexGradient: 1
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 72
+ m_fontSizeBase: 53.61
+ m_fontWeight: 400
+ m_enableAutoSizing: 1
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 1
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1911804840
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_CullTransparentMesh: 0
+--- !u!114 &1911804841
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useTypeWriter: 1
+ startTypewriterMode: 3
+ hideAppearancesOnSkip: 0
+ triggerEventsOnSkip: 0
+ resetTypingSpeedAtStartup: 1
+ disappearanceOrientation: 0
+ onTextShowed:
+ m_PersistentCalls:
+ m_Calls: []
+ onTypewriterStart:
+ m_PersistentCalls:
+ m_Calls: []
+ onTextDisappeared:
+ m_PersistentCalls:
+ m_Calls: []
+ onCharacterVisible:
+ m_PersistentCalls:
+ m_Calls: []
+ onMessage:
+ m_PersistentCalls:
+ m_Calls: []
+ waitForNormalChars: 0.02
+ waitLong: 0.6
+ waitMiddle: 0.2
+ avoidMultiplePunctuactionWait: 0
+ waitForNewLines: 1
+ waitForLastCharacter: 1
+ useTypewriterWaitForDisappearances: 1
+ disappearanceWaitTime: 0.015
+ disappearanceSpeedMultiplier: 1
+--- !u!114 &1911804842
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ typewriterStartsAutomatically: 0
+ animationLoop: 0
+ timeScale: 0
+ _text: Press Play to watch how to stack effects on top of each other.
+ useDynamicScaling: 0
+ referenceFontSize: -1
+ isResettingTimeOnNewText: 1
+ useDefaultDatabases: 1
+ databaseBehaviors: {fileID: 11400000, guid: 143063c9d42da4bb3bdef3e969df1633, type: 2}
+ databaseAppearances: {fileID: 11400000, guid: efcefe34ffbda4c5eb7e39d858738fbc,
+ type: 2}
+ databaseActions: {fileID: 11400000, guid: 59963a936d6fb4257a79cffca6bafcbb, type: 2}
+ defaultAppearancesTags:
+ - rdir
+ defaultDisappearancesTags: []
+ defaultBehaviorsTags: []
+ defaultTagsMode: 0
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity.meta
new file mode 100644
index 0000000..231b54f
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 82a6944f7c7c3fa47856f534f7482122
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity
new file mode 100644
index 0000000..ccd37d3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity
@@ -0,0 +1,593 @@
+%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: 3
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ 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: 0
+ 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: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 384671842bbd047fdb6f337fea5de8cd,
+ type: 2}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &333414662
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 333414663}
+ m_Layer: 0
+ m_Name: ---------------------
+ m_TagString: EditorOnly
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &333414663
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 333414662}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &349547107
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 349547109}
+ - component: {fileID: 349547108}
+ m_Layer: 0
+ m_Name: Formatted Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &349547108
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 349547107}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 65cd2c622bcc2df47813a20bb2263361, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ textAnimatorPlayer: {fileID: 1911804841}
+ textToShow: 'You can use attributes to add similar effects with different values,
+ like:
+
+ wiggle1> wiggle2>
+
+
+
+ In
+ the previous example, the first tag is "".
+
+ The
+ second tag is " a=2 f=2>",
+ which means it has a double ''amplitude'' and ''frequency''
+ than the default one.'
+--- !u!4 &349547109
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 349547107}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.50578886, y: -0.5419356, z: -3.6875}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &519420028
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 519420032}
+ - component: {fileID: 519420031}
+ - component: {fileID: 519420029}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+--- !u!20 &519420031
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 4.15
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 0
+ m_HDR: 1
+ m_AllowMSAA: 0
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 0
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: -0.62, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &903061070
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 903061074}
+ - component: {fileID: 903061073}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!223 &903061073
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_AdditionalShaderChannelsFlag: 25
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &903061074
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_Children:
+ - {fileID: 1911804838}
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ 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!1 &923047835
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 923047836}
+ m_Layer: 0
+ m_Name: ---------------------
+ m_TagString: EditorOnly
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &923047836
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923047835}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1911804837
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1911804838}
+ - component: {fileID: 1911804840}
+ - component: {fileID: 1911804839}
+ - component: {fileID: 1911804842}
+ - component: {fileID: 1911804841}
+ m_Layer: 5
+ m_Name: Text (TMP)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1911804838
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 903061074}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 2.5, y: 0}
+ m_SizeDelta: {x: -84.9, y: -506.8}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1911804839
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: Press play to watch similar effects with different values
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2}
+ m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4278190080
+ m_fontColor: {r: 0, g: 0, b: 0, a: 1}
+ m_enableVertexGradient: 1
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 72
+ m_fontSizeBase: 53.61
+ m_fontWeight: 400
+ m_enableAutoSizing: 1
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 1
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1911804840
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_CullTransparentMesh: 0
+--- !u!114 &1911804841
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useTypeWriter: 1
+ startTypewriterMode: 3
+ hideAppearancesOnSkip: 0
+ triggerEventsOnSkip: 0
+ resetTypingSpeedAtStartup: 1
+ disappearanceOrientation: 0
+ onTextShowed:
+ m_PersistentCalls:
+ m_Calls: []
+ onTypewriterStart:
+ m_PersistentCalls:
+ m_Calls: []
+ onTextDisappeared:
+ m_PersistentCalls:
+ m_Calls: []
+ onCharacterVisible:
+ m_PersistentCalls:
+ m_Calls: []
+ onMessage:
+ m_PersistentCalls:
+ m_Calls: []
+ waitForNormalChars: 0.02
+ waitLong: 0.6
+ waitMiddle: 0.2
+ avoidMultiplePunctuactionWait: 0
+ waitForNewLines: 1
+ waitForLastCharacter: 1
+ useTypewriterWaitForDisappearances: 1
+ disappearanceWaitTime: 0.015
+ disappearanceSpeedMultiplier: 1
+--- !u!114 &1911804842
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ typewriterStartsAutomatically: 0
+ animationLoop: 0
+ timeScale: 0
+ _text: Press play to watch similar effects with different values
+ useDynamicScaling: 0
+ referenceFontSize: -1
+ isResettingTimeOnNewText: 1
+ useDefaultDatabases: 1
+ databaseBehaviors: {fileID: 11400000, guid: 143063c9d42da4bb3bdef3e969df1633, type: 2}
+ databaseAppearances: {fileID: 11400000, guid: efcefe34ffbda4c5eb7e39d858738fbc,
+ type: 2}
+ databaseActions: {fileID: 11400000, guid: 59963a936d6fb4257a79cffca6bafcbb, type: 2}
+ defaultAppearancesTags:
+ - vertexp
+ defaultDisappearancesTags: []
+ defaultBehaviorsTags: []
+ defaultTagsMode: 0
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity.meta
new file mode 100644
index 0000000..f5b449a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 85ee4ca1f3a508347b883d20385a5eac
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity
new file mode 100644
index 0000000..2d1303a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity
@@ -0,0 +1,1645 @@
+%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: 3
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ 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: 0
+ 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: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 49d28ee43fb9747d884ba6ecfade7616,
+ type: 2}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &86436864
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 86436866}
+ - component: {fileID: 86436865}
+ m_Layer: 0
+ m_Name: foliage_2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &86436865
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 86436864}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 1
+ m_Sprite: {fileID: 9166712023175037457, guid: 4dffe6eab57ca4e4ba2f967307bd1c29,
+ type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.2800001, y: 1.3002625}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &86436866
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 86436864}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.053, y: -2.343, z: 0}
+ m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723}
+ m_Children: []
+ m_Father: {fileID: 1694713421}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &332677958
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 332677959}
+ - component: {fileID: 332677960}
+ m_Layer: 0
+ m_Name: fake shadow (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &332677959
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 332677958}
+ m_LocalRotation: {x: 0.5545259, y: -0, z: -0, w: 0.8321665}
+ m_LocalPosition: {x: 4.9811, y: -2.0548997, z: 0}
+ m_LocalScale: {x: 0.9463681, y: 0.879066, z: 0.045535617}
+ m_Children: []
+ m_Father: {fileID: 1694713421}
+ m_RootOrder: 7
+ m_LocalEulerAnglesHint: {x: 67.356, y: 0, z: 0}
+--- !u!212 &332677960
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 332677958}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -100
+ m_Sprite: {fileID: -2413806693520163455, guid: e074a9b4b276847b0b578d2c96d2c1db,
+ type: 3}
+ m_Color: {r: 0, g: 0, b: 0, a: 0.20784314}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &376784909
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 376784910}
+ - component: {fileID: 376784912}
+ - component: {fileID: 376784911}
+ - component: {fileID: 376784914}
+ - component: {fileID: 376784913}
+ m_Layer: 0
+ m_Name: Text (TMP)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &376784910
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 376784909}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 855521401}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0.26, y: 0.19}
+ m_SizeDelta: {x: 4.8232, y: 1.5871}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &376784911
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 376784909}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, 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_text: Press play to see an example of events
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2}
+ m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 4.72
+ m_fontSizeBase: 4.86
+ m_fontWeight: 400
+ m_enableAutoSizing: 1
+ m_fontSizeMin: 1.8
+ m_fontSizeMax: 4.72
+ m_fontStyle: 1
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 0
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_renderer: {fileID: 376784912}
+ m_maskType: 0
+ _SortingLayer: 0
+ _SortingLayerID: 0
+ _SortingOrder: 0
+--- !u!23 &376784912
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 376784909}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ 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
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!114 &376784913
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 376784909}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useTypeWriter: 1
+ startTypewriterMode: 3
+ hideAppearancesOnSkip: 0
+ triggerEventsOnSkip: 0
+ resetTypingSpeedAtStartup: 1
+ disappearanceOrientation: 0
+ onTextShowed:
+ m_PersistentCalls:
+ m_Calls: []
+ onTypewriterStart:
+ m_PersistentCalls:
+ m_Calls: []
+ onTextDisappeared:
+ m_PersistentCalls:
+ m_Calls: []
+ onCharacterVisible:
+ m_PersistentCalls:
+ m_Calls: []
+ onMessage:
+ m_PersistentCalls:
+ m_Calls: []
+ waitForNormalChars: 0.03
+ waitLong: 0.6
+ waitMiddle: 0.2
+ avoidMultiplePunctuactionWait: 1
+ waitForNewLines: 1
+ waitForLastCharacter: 0
+ useTypewriterWaitForDisappearances: 1
+ disappearanceWaitTime: 0.015
+ disappearanceSpeedMultiplier: 1
+--- !u!114 &376784914
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 376784909}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ typewriterStartsAutomatically: 1
+ animationLoop: 0
+ timeScale: 0
+ _text: Hello how
+ useDynamicScaling: 1
+ referenceFontSize: 10
+ isResettingTimeOnNewText: 1
+ useDefaultDatabases: 1
+ databaseBehaviors: {fileID: 0}
+ databaseAppearances: {fileID: 0}
+ databaseActions: {fileID: 0}
+ defaultAppearancesTags:
+ - diagexp
+ defaultDisappearancesTags:
+ - size
+ defaultBehaviorsTags: []
+ defaultTagsMode: 0
+--- !u!1 &519420028
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 519420032}
+ - component: {fileID: 519420031}
+ - component: {fileID: 519420029}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+--- !u!20 &519420031
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 4.15
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 0
+ m_HDR: 1
+ m_AllowMSAA: 0
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 0
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.89, y: -0.48, z: -10}
+ 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!1 &557036334
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 557036336}
+ - component: {fileID: 557036335}
+ m_Layer: 0
+ m_Name: character
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &557036335
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 557036334}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: 3351748369286481944, guid: 4dffe6eab57ca4e4ba2f967307bd1c29,
+ type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &557036336
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 557036334}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -3.43, y: -2.4, z: 0}
+ m_LocalScale: {x: 1.14, y: 1.14, z: 1.14}
+ m_Children:
+ - {fileID: 1715889608}
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &673277488
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 673277490}
+ - component: {fileID: 673277489}
+ m_Layer: 0
+ m_Name: crate_0 (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &673277489
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 673277488}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -1
+ m_Sprite: {fileID: 834852548192020694, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.2800001, y: 1.3002625}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &673277490
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 673277488}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 4.973, y: -2.0629997, z: 0}
+ m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723}
+ m_Children: []
+ m_Father: {fileID: 1694713421}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &835184617
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 835184619}
+ - component: {fileID: 835184618}
+ m_Layer: 0
+ m_Name: foliage_2 (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &835184618
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 835184617}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -1
+ m_Sprite: {fileID: 9166712023175037457, guid: 4dffe6eab57ca4e4ba2f967307bd1c29,
+ type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.2800001, y: 1.3002625}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &835184619
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 835184617}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 3.793, y: -2.2919998, z: 0}
+ m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723}
+ m_Children: []
+ m_Father: {fileID: 1694713421}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &855521399
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 855521401}
+ - component: {fileID: 855521400}
+ m_Layer: 0
+ m_Name: dialogue box
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &855521400
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 855521399}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: 21300000, guid: 0ee0b44b8c03546a392c57dc59d85589, type: 3}
+ m_Color: {r: 0, g: 0, b: 0, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 1
+ m_Size: {x: 7.5092654, y: 3.6853285}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &855521401
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 855521399}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1.23, y: 0.26, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 376784910}
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1242330695
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1242330697}
+ - component: {fileID: 1242330696}
+ m_Layer: 0
+ m_Name: foliage_2 (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &1242330696
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1242330695}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 1
+ m_Sprite: {fileID: 9166712023175037457, guid: 4dffe6eab57ca4e4ba2f967307bd1c29,
+ type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.2800001, y: 1.3002625}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &1242330697
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1242330695}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 4.473, y: -2.7729998, z: 0}
+ m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723}
+ m_Children: []
+ m_Father: {fileID: 1694713421}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1264690267
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1264690269}
+ - component: {fileID: 1264690268}
+ m_Layer: 0
+ m_Name: foliage_1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &1264690268
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1264690267}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 1
+ m_Sprite: {fileID: -7061757903698255618, guid: 4dffe6eab57ca4e4ba2f967307bd1c29,
+ type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.2800001, y: 1.3002625}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &1264690269
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1264690267}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 4.093, y: -2.7629998, z: 0}
+ m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723}
+ m_Children: []
+ m_Father: {fileID: 1694713421}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1625340089
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1625340092}
+ - component: {fileID: 1625340091}
+ - component: {fileID: 1625340090}
+ m_Layer: 0
+ m_Name: Continue text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1625340090
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1625340089}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, 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_text: (press any key to continue)
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2}
+ m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4290690750
+ m_fontColor: {r: 0.74509805, g: 0.74509805, b: 0.74509805, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 18.65
+ m_fontSizeBase: 12.12
+ m_fontWeight: 400
+ m_enableAutoSizing: 1
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 0
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_renderer: {fileID: 1625340091}
+ m_maskType: 0
+ _SortingLayer: 0
+ _SortingLayerID: 0
+ _SortingOrder: 0
+--- !u!23 &1625340091
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1625340089}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ 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
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!224 &1625340092
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1625340089}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.18482, y: 0.18482, z: 0.18482}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 1.45, y: -1.06}
+ m_SizeDelta: {x: 22.5552, y: 2.2409}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &1694713420
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1694713421}
+ m_Layer: 0
+ m_Name: Scenery
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1694713421
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1694713420}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1823198194}
+ - {fileID: 673277490}
+ - {fileID: 1264690269}
+ - {fileID: 86436866}
+ - {fileID: 1242330697}
+ - {fileID: 835184619}
+ - {fileID: 1787796922}
+ - {fileID: 332677959}
+ m_Father: {fileID: 0}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1715889606
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1715889608}
+ - component: {fileID: 1715889607}
+ m_Layer: 0
+ m_Name: fake shadow
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &1715889607
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1715889606}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -100
+ m_Sprite: {fileID: -2413806693520163455, guid: e074a9b4b276847b0b578d2c96d2c1db,
+ type: 3}
+ m_Color: {r: 0, g: 0, b: 0, a: 0.20784314}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &1715889608
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1715889606}
+ m_LocalRotation: {x: 0.5545259, y: -0, z: -0, w: 0.8321665}
+ m_LocalPosition: {x: 0.009999986, y: 0.019999972, z: 0}
+ m_LocalScale: {x: 1.5824505, y: 1.4699122, z: 0.07614146}
+ m_Children: []
+ m_Father: {fileID: 557036336}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 67.356, y: 0, z: 0}
+--- !u!1 &1787796920
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1787796922}
+ - component: {fileID: 1787796921}
+ m_Layer: 0
+ m_Name: fake shadow (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &1787796921
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1787796920}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -100
+ m_Sprite: {fileID: -2413806693520163455, guid: e074a9b4b276847b0b578d2c96d2c1db,
+ type: 3}
+ m_Color: {r: 0, g: 0, b: 0, a: 0.20784314}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &1787796922
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1787796920}
+ m_LocalRotation: {x: 0.5545259, y: -0, z: -0, w: 0.8321665}
+ m_LocalPosition: {x: 4.2630005, y: -2.5129998, z: 0}
+ m_LocalScale: {x: 1.1683557, y: 1.0852667, z: 0.05621681}
+ m_Children: []
+ m_Father: {fileID: 1694713421}
+ m_RootOrder: 6
+ m_LocalEulerAnglesHint: {x: 67.356, y: 0, z: 0}
+--- !u!1 &1790845101
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1790845102}
+ - component: {fileID: 1790845103}
+ m_Layer: 0
+ m_Name: '[Script is here!]'
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1790845102
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1790845101}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1790845103
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1790845101}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 90f9467af4b1d44aab0c2f932db2b5a7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ typewriter: {fileID: 376784913}
+ dialoguesLines:
+ - Hi! Welcome!!
+ - You can easily have characters change expressions mid-sentence..
+ - Did you see it??
+ - ' Probaby I was too too fast.'
+ - Noticed it now?
+ - These are named "Events>", and can be called whenever a specific
+ part of the text is shown.
+ - Of course you can use them to make anything happen in your game, not
+ only characters!
+ - For example, you can make the scenery move word
+ after word!
+ - It's your turn now, there's no limit to creativity here!!
+ faces:
+ - {fileID: 3351748369286481944, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ - {fileID: 567328745045655870, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ - {fileID: 2750705142841656183, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ - {fileID: -7053939661997144990, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ - {fileID: 1892523670701107293, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ - {fileID: 405182146505222058, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ - {fileID: 2785564300681498144, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ - {fileID: 6645427384175290001, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ faceRenderer: {fileID: 557036335}
+ continueText: {fileID: 1625340089}
+ crates:
+ - {fileID: 1823198194}
+ - {fileID: 673277490}
+--- !u!1 &1823198192
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1823198194}
+ - component: {fileID: 1823198193}
+ m_Layer: 0
+ m_Name: crate_0
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!212 &1823198193
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1823198192}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: 834852548192020694, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.2800001, y: 1.3002625}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &1823198194
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1823198192}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 4.2530003, y: -2.5229998, z: 0}
+ m_LocalScale: {x: 0.83, y: 0.83, z: 0.83}
+ m_Children: []
+ m_Father: {fileID: 1694713421}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity.meta
new file mode 100644
index 0000000..4c2a48e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b6a3261d7db5245c5b24f3ec0d4968b5
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity
new file mode 100644
index 0000000..4fbe0c7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity
@@ -0,0 +1,664 @@
+%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: 3
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 11
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 10
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 0
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringMode: 2
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ShowResolutionOverlay: 1
+ m_LightingDataAsset: {fileID: 0}
+ m_UseShadowmask: 1
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &333414662
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 333414663}
+ m_Layer: 0
+ m_Name: '---------------------'
+ m_TagString: EditorOnly
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &333414663
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 333414662}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &349547107
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 349547109}
+ - component: {fileID: 349547108}
+ m_Layer: 0
+ m_Name: Formatted Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &349547108
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 349547107}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 65cd2c622bcc2df47813a20bb2263361, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ textAnimatorPlayer: {fileID: 1911804841}
+ textToShow: 'You can use special tags to pause the typewriter until a certain action
+ is completed.
+
+
+ Example:
+
+
+ Waiting one second: done.
+
+ Waiting three seconds: done.
+
+ Waiting your input: done.
+
+
+ You can also create your own (via C#).
+
+ Read the docs for more ^^'
+--- !u!4 &349547109
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 349547107}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -0.50578886, y: -0.5419356, z: -3.6875}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &519420028
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 519420032}
+ - component: {fileID: 519420031}
+ - component: {fileID: 519420029}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+--- !u!20 &519420031
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0}
+ m_projectionMatrixMode: 1
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_GateFitMode: 2
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 4.15
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 0
+ m_HDR: 1
+ m_AllowMSAA: 0
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 0
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: -0.62, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &903061070
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 903061074}
+ - component: {fileID: 903061073}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!223 &903061073
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_AdditionalShaderChannelsFlag: 25
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &903061074
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 903061070}
+ 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_Children:
+ - {fileID: 1911804838}
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ 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!1 &923047835
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 923047836}
+ m_Layer: 0
+ m_Name: '---------------------'
+ m_TagString: EditorOnly
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &923047836
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923047835}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1911804837
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1911804838}
+ - component: {fileID: 1911804840}
+ - component: {fileID: 1911804839}
+ - component: {fileID: 1911804842}
+ - component: {fileID: 1911804841}
+ m_Layer: 5
+ m_Name: Text (TMP)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1911804838
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 903061074}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 2.5, y: 0}
+ m_SizeDelta: {x: -84.9, y: -506.8}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1911804839
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_text: Press play to test typewriter actions
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2}
+ m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4278190080
+ m_fontColor: {r: 0, g: 0, b: 0, a: 1}
+ m_enableVertexGradient: 1
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_outlineColor:
+ serializedVersion: 2
+ rgba: 4278190080
+ m_fontSize: 72
+ m_fontSizeBase: 53.61
+ m_fontWeight: 400
+ m_enableAutoSizing: 1
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_textAlignment: 514
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_firstOverflowCharacterIndex: -1
+ m_linkedTextComponent: {fileID: 0}
+ m_isLinkedTextComponent: 0
+ m_isTextTruncated: 0
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_ignoreRectMaskCulling: 0
+ m_ignoreCulling: 1
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_VertexBufferAutoSizeReduction: 1
+ m_firstVisibleCharacter: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_textInfo:
+ textComponent: {fileID: 1911804839}
+ characterCount: 37
+ spriteCount: 0
+ spaceCount: 5
+ wordCount: 6
+ linkCount: 0
+ lineCount: 2
+ pageCount: 1
+ materialCount: 1
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_spriteAnimator: {fileID: 0}
+ m_hasFontAssetChanged: 0
+ m_subTextObjects:
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ - {fileID: 0}
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1911804840
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_CullTransparentMesh: 0
+--- !u!114 &1911804841
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ useTypeWriter: 1
+ startTypewriterMode: 3
+ canSkipTypewriter: 1
+ hideAppearancesOnSkip: 0
+ triggerEventsOnSkip: 0
+ resetTypingSpeedAtStartup: 1
+ disappearanceOrientation: 0
+ onTextShowed:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ onTypewriterStart:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ onTextDisappeared:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ onCharacterVisible:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: Febucci.UI.Core.CharacterEvent, Febucci.TextAnimator.Runtime, Version=0.0.0.0,
+ Culture=neutral, PublicKeyToken=null
+ waitForNormalChars: 0.03
+ waitLong: 0.6
+ waitMiddle: 0.2
+ avoidMultiplePunctuactionWait: 0
+ waitForNewLines: 1
+ waitForLastCharacter: 1
+ useTypewriterWaitForDisappearances: 1
+ disappearanceWaitTime: 0.015
+ disappearanceSpeedMultiplier: 1
+--- !u!114 &1911804842
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1911804837}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ triggerAnimPlayerOnChange: 0
+ effectIntensityMultiplier: 100
+ appearancesContainer:
+ tagsFallback_Appearances:
+ - rot
+ - fade
+ tagsFallback_Disappearances:
+ - size
+ values:
+ defaults:
+ sizeDuration: 0.36
+ sizeAmplitude: 2
+ fadeDuration: 0.3
+ verticalExpandDuration: 0.3
+ verticalFromBottom: 0
+ horizontalExpandDuration: 0.3
+ horizontalExpandStart: 0
+ diagonalExpandDuration: 0.3
+ diagonalFromBttmLeft: 0
+ offsetDir: {x: 1, y: 1}
+ offsetDuration: 0.3
+ offsetAmplitude: 1
+ rotationDuration: 0.3
+ rotationStartAngle: 180
+ randomDirDuration: 0.3
+ randomDirAmplitude: 1
+ presets: []
+ tags_fallbackBehaviors: []
+ behaviorValues:
+ defaults:
+ wiggleAmplitude: 0.15
+ wiggleFrequency: 8.9
+ waveFrequency: 4.78
+ waveAmplitude: 0.2
+ waveWaveSize: 0.18
+ angleSpeed: 180
+ angleDiffBetweenChars: 10
+ swingAmplitude: 27.5
+ swingFrequency: 5
+ swingWaveSize: 0
+ shakeStrength: 0.085
+ shakeDelay: 0.04
+ sizeAmplitude: 1.4
+ sizeFrequency: 4.84
+ sizeWaveSize: 0.18
+ slideAmplitude: 0.12
+ slideFrequency: 5
+ slideWaveSize: 0
+ bounceAmplitude: 0.08
+ bounceFrequency: 1
+ bounceWaveSize: 0.08
+ hueShiftSpeed: 0.8
+ hueShiftWaveSize: 0.08
+ fadeDelay: 1.2
+ dangleAmplitude: 0.13
+ dangleFrequency: 2.41
+ dangleWaveSize: 0.18
+ dangleAnchorBottom: 0
+ pendAmplitude: 25
+ pendFrequency: 3
+ pendWaveSize: 0.2
+ pendInverted: 0
+ presets: []
+ scriptable_globalBehaviorsValues: {fileID: 0}
+ scriptable_globalAppearancesValues: {fileID: 0}
+ useDynamicScaling: 0
+ referenceFontSize: -1
+ isResettingEffectsOnNewText: 1
+ timeScale: 0
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity.meta
new file mode 100644
index 0000000..be677bf
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ba92474cac6c572459cd8fb75148ea94
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font.meta b/Assets/Plugins/Febucci/Text Animator/Example/Font.meta
new file mode 100644
index 0000000..ab11377
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Font.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9b13dc9321a13ef4383917b6db657d65
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset
new file mode 100644
index 0000000..68cf88b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset
@@ -0,0 +1,5367 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!28 &-2340667833886341526
+Texture2D:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Lato-Regular Atlas
+ m_ImageContentsHash:
+ serializedVersion: 2
+ Hash: 00000000000000000000000000000000
+ m_ForcedFallbackFormat: 4
+ m_DownscaleFallback: 0
+ serializedVersion: 2
+ m_Width: 1024
+ m_Height: 1024
+ m_CompleteImageSize: 1048576
+ m_TextureFormat: 1
+ m_MipCount: 1
+ m_IsReadable: 1
+ m_StreamingMipmaps: 0
+ m_StreamingMipmapsPriority: 0
+ m_AlphaIsTransparency: 0
+ m_ImageCount: 1
+ m_TextureDimension: 2
+ m_TextureSettings:
+ serializedVersion: 2
+ m_FilterMode: 1
+ m_Aniso: 1
+ m_MipBias: 0
+ m_WrapU: 0
+ m_WrapV: 0
+ m_WrapW: 0
+ m_LightmapFormat: 0
+ m_ColorSpace: 0
+ image data: 1048576
+ _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020eeffffeb6b000000000000000000000000000000000000177ac4e9fae7bd6f0d00000000000000000000000c6dbae5f9ebc77d1a000000000000000000000000000000000000007cffffffffa300000000000000000000000000000000000000009bffffffff80000000000000000000000000000064fffffffaaa06000000000000000000000000000000000000000010ffffffffffffffffffffffffffffffffffffffffff3c0000000000000000000000000000000000000000000000000000000000000000000000000a56798080807807000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000c7e7f6b1f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000000000034fffffffffffffffffffffffffffffef6e9cdaa773b02000000000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d0000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000000000000000002c7ab9dff5fbf0d9b68445050000000000000000000028c5faffffffe12000000000000000000bedfffffa9e00000000000000000000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff1800000000000000000000043c83c1daeff9e6d1ab651d00000000000000000000000000000000000000000058ffffffff7b0000000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000001aacf5ec8908000000000000000000000000000000000000000006478fc9e2f7f9eac7934903000000000000000000000ad9ffffffe833000000000000000000000000000fc9ffffffff8d0000000000000000000000000348727042010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004efffffffe4c0000000000000000000000000000000071f3ffffffffffffffea5900000000000000000054e8fffffffffffffff579010000000000000000000000000000000000cdfffffffff10700000000000000000000000000000000000004ecffffffffd0000000000000000000000000000003d7ffffffff8a00000000000000000000000000000000000000002fffffffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000002de2fffffffffc51000000000000000000000000000358befdfffffffffffffffffffffffffab44c0100000000000000000000000000008efffff85f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000358befdfffffffffffffffffffffffffab44c01000000000000000000000000000000000034ffffffffffffffffffffffffffffffffffffffffffe892240000000000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff98000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000000000000003ebdffffffffffffffffffffffed911a0000000000000028eaffffffffe3220000000000000000000082ffffffff4f000000000000000000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000000000000000025edefffffffffffffffffffffeaa2700000000000000000000000000000000000000c0ffffffffe00200000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000007d7ffffffffa4000000000000000000000000000000000000076be4ffffffffffffffffffffe0530000000000000000000036fcffffffe10f000000000000000000000000a3ffffffffd60800000000000000000000000093ffffffff76000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008dffffffed1e000000000000000000000000000097ffffffffffffffffffffff780000000000000070feffffffffffffffffffffa5010000000000000000000000000000001effffffffffff4f00000000000000000000000000000000000047ffffffffffff21000000000000000000000000000053fffffffff619000000000000000000000000000000000000004effffffffffffffffffffffffffffffffffffffffff3c0000000000000000000000000000000000000000000000000000000000000000000026e9fffffffffe610000000000000000000000000055deffffffffffffffffffffffffffffffffffffd4470000000000000000000000000006d0fffffc3a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000055deffffffffffffffffffffffffffffffffffffd4470000000000000000000000000000000034fffffffffffffffffffffffffffffffffffffffffffffffda41c0000000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff31000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000000000793fefffffffffffffffffffffffffffff78e150000000022e5ffffffffe625000000000000000000000015f6ffffffbf000000000000000000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000000000000001bcafffffffffffffffffffffffffffffc7a000000000000000000000000000000000028ffffffffffff4b00000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000055ffffffffffff2a0000000000000000000000000000000023d3ffffffffffffffffffffffffffffb21200000000000000000082ffffffffa1000000000000000000000049fffffffffc350000000000000000000000000092ffffffff750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c7ffffffc80500000000000000000000000067ffffffffffe6d1e6fffffffffe4e000000000042fdffffffffecd1dfffffffffff7c0000000000000000000000000000006effffffffffffa50000000000000000000000000000000000009dffffffffffff71000000000000000000000000000000c9ffffffff92000000000000000000000000000000000000006effffffffe4cccccccccccccccccccccccccccccccc2f0000000000000000000000000000000000000000000000000000000000000000001ee2ffffffffff7300000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e0000000000000000000000002af6ffffdf0f00000000074a82b5d8e9f8fbf0dcbb9057140000000000000000000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e000000000000000000000000000034ffffffffffd2cccccccccccccccccdd6ecfffffffffffffffff463000000000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000000007b7ffffffffffffffecd3d2e2fdffffffffffffef4e00001cdfffffffffe8270000000000000000000000000095ffffffff2f0000000000000000000000000000000033cccccccccccccccccccccccccccccccccccccccccccccccccccc130000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa00300000000000000000000000000000090ffffffffffffb300000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000078ffffffffffff4d0000000000000000000000000000003beffffffffffffff2d7d8f2ffffffffffffcd10000000000000000004ccffffffff520000000000000000000de2ffffffff8400000000000000000000000000008affffffff6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dedffffff8e000000000000000000000010f2ffffffbe2d0000002dbdffffffe40700000002d8ffffffd43e0000001da3fffffffb210000000000000000000000000000bffffffffffffff3080000000000000000000000000000000005edffffffffffffc200000000000000000000000000000041fffffffff81b0000000000000000000000000000000000008dffffffff660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016daffffffffff8600000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb230000000000000000000000006bffffffa700002d9beffffffffffffffffffffffffffcbb550300000000000000000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb230000000000000000000000000034ffffffffff200000000000000000000000114a97eeffffffffffff9c03000000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff6200000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000000a8ffffffffffed802500000000083d89e7fffffffffe891ad9ffffffffea2a000000000000000000000000000021fcffffff9d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e3fffffffffc9839020000001059d0ffffffffff86000000000000000000000000000009eefffffffffffffd1e000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000054ffffffffffff2700000000000000000000000000001feafffffffffda03801000000328ffaffffffffc805000000000000000028f6ffffffeb18000000000000000096ffffffffd005000000000000000000000000000082ffffffff660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfeffffff4f0000000000000000000078ffffffc505000000000004c1ffffff6700000050ffffffe1110000000000009dffffff970000000000000000000000000013fcffffffffffffff520000000000000000000000000000000049fffffffffffffffd15000000000000000000000000000000b9ffffffff95000000000000000000000000000000000000acffffffff4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d0ffffffffff9800000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe828000000000000000000000000b3ffffff76a1fdffffffffffffffffffffffffffffffffffdd550000000000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe82800000000000000000000000034ffffffffff2000000000000000000000000000000f88f7ffffffffffad03000000000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a00000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000054ffffffffffbb170000000000000000000978f0fffffffff7ffffffffec2d00000000000000000000000000000000a7fffffff715000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b8ffffffffe93500000000000000000387fffffffffe470000000000000000000000000060fffffff7c7ffffff83000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000005d3ffffffff9f000000000000000000000000000001caffffffffeb3d00000000000000002bddffffffff790000000000000000006fffffffffb4000000000000003dfefffffff92f0000000000000000000000000000007affffffff5f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089ffffffef20000000000000000000c6ffffff380000000000000031ffffffba0000009effffff600000000000000012f6ffffe90100000000000000000000000060ffffffffffffffffa8000000000000000000000000000000009fffffffffffffffff6300000000000000000000000000000031fefffffff91e0000000000000000000000000000000000cbffffffff2a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bc5ffffffffffa902000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe018000000000000000000000015e8ffffffffffffffffffffffffffffffffffffffffffffffffb6170000000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe018000000000000000000000034ffffffffff200000000000000000000000000000000021d6ffffffffff9800000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff930000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000004e1ffffffffc10700000000000000000000000016c0ffffffffffffffee30000000000000000000000000000000000030ffffffff7b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfffffffff52b000000000000000000000094ffffffffd401000000000000000000000000c8ffffffc585ffffffe6040000000000000000000000000000000000000000001cffffffe80000000000000000000000000000000000000000000000000016a7f4ea8406000000000000000000000000000057fffffffff52c0000000000000000000020e6fffffff620000000000000000001bcffffffff66000000000008d9ffffffff7b0000000000000000000000000000000073ffffffff570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c3ffffffca060000000000000008faffffe5000000000000000000dbfffff7050000dbfffffe0f0000000000000000b3ffffff2d000000000000000000000000b1ffffffffe6fffffff40a000000000000000000000000000005eeffffffedffffffffb400000000000000000000000000000000a8ffffffff990000000000000000000000000000000000ebffffffff0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bbffffffffffb805000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb0100000000000000000000004affffffffffffffffffffffffffffffffffffffffffffffffffe732000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb010000000000000000000034ffffffffff20000000000000000000000000000000000011c1ffffffffff5c0000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c0000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000048fffffffff621000000000000000000000000000004a4ffffffffffef3300000000000000000000000000000000000000baffffffe505000000000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000c4ffffffff750000000000000000000000000be3ffffffff4d00000000000000000000002fffffffff823dffffffff520000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d6ffffffff6900000000000000000000000057ffffffff920000000000000000001deffffffff4230000000088ffffffffc903000000000000000000000000000000006bffffffff5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001bebffffff91000000000000001fffffffb9000000000000000000abffffff1b0000f7ffffe100000000000000000083ffffff4b00000000000000000000000af6ffffffff82ffffffff5500000000000000000000000000004bffffffff9af0fffffff80c00000000000000000000000000000024fafffffffa200000000000000000000000000000000affffffffee000000000000000000000000000000000000000000000000000000000000000000175a94bedff1fbfbefd6b2753406aeffffffffffc50a00000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b0000000000000000000004a3ffffffffffffffe092572b13050b1f3462a7ebfffffffffffffff3390000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b0000000000000000000034ffffffffff200000000000000000000000000000000000000eddfffffffff1170000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc4000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400008affffffffa600000000000000000000000000000028e5ffffffffff6f000000000000000000000000000000000000000043ffffffff59000000000000000000000000000000000000000000000000001cffffffe80000000000000000000000000000002bfffffffff1090000000000000000000000000076ffffffffb2000000000000000000000097ffffffff3602e9ffffffba0000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000002cffffffffe20500000000000000000000000000c9ffffffeb050000000000000000005cffffffffc503000032fbfffffff728000000000000000000000000000000000063ffffffff4900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047feffffff5300000000000031ffffffa90000000000000000009affffff300009ffffffd100000000000000000072ffffff60000000000000000000000052fffffffffd18f6ffffffab0000000000000000000000000000a1ffffffff55bcffffffff550000000000000000000000000000000096ffffffff9d00000000000000000000000000000029ffffffffd00000000000000000000000000000000000000000000000000000000000000358befdfffffffffffffffffffffffff8ffffffffffd21100000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed11000000000000000001a8ffffffffffffd4480000000000000000000000035fdbffffffffffffee28000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed1100000000000000000034ffffffffff200000000000000000000000000000000000000036fbffffffff9a0000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000b0ffffffff6000000000000000000000000000002de9ffffffffffffde080000000000000000000000000000000000000000ccffffffc9000000000000000000000000000000000000000000000000001cffffffe80000000000000000000000000000006dffffffff9e00000000000000000000000000001bfffffffff1030000000000000000000cf2ffffffdb010090fffffffe2300000000000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074ffffffff84000000000000000000000000000067ffffffff4d00000000000000000000aaffffffff790004cfffffffff730000000000000000000000000000000000005bffffffff410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085fffffff02300000000002bffffffad0000000000000000009fffffff2a0004ffffffd500000000000000000077ffffff5a0000000000000000000000a3ffffffffcc00b6fffffff60b00000000000000000000000006f0fffffff80d7fffffffffa60000000000000000000000000000000018f5fffffffb23000000000000000000000000000049ffffffffb1000000000000000000000000000000000000000000000000000000000055deffffffffffffffffffffffffffffffffffffffffdd190000000000000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d000000000000000082ffffffffffffffec2000000000000000000000000000037efeffffffffffd2080000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d00000000000000000034ffffffffff20000000000000000000000000000000000000000091fffffffffb1c000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000bcffffffff450000000000000000000000000032ecffffffffffffffff7e000000000000000000000000000000000000000056ffffffff380000000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000adffffffff64000000000000000000000000000000dfffffffff3500000000000000000067ffffffff7700002affffffff8a00000000000000000000000000000000000000001cffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adffffffff43000000000000000000000000000012fdffffff8f0000000000000000000013e6fffffffa237affffffffc30200000000000000000000000000000000000053ffffffff3a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c0ffffffcd070000000019ffffffc4000000000000000000b7ffffff180000f1ffffec0000000000000000008fffffff470000000000000000000004eeffffffff820062ffffffff580000000000000000000000004dffffffffb00036fffffffff0060000000000000000000000000000000085ffffffffffffffffffffffffffffffffffffffffffffffff9300000000000000000000000000000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffff6a0000000000000000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe9050000000000003dfefffffffff0f9ffffce0900000000000000000000000000004ff4ffffffffff8700000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe905000000000000000034ffffffffff20000000000000000000000000000000000000000021fcffffffff860000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000abffffffff4700000000000000000000000037efffffffffeb93fffffff40f000000000000000000000000000000000000005effffffffa70000000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000d4ffffffff36000000000000000000000000000000b0ffffffff5b000000000000000000cefffffffb17000000c5ffffffeb07000000000000000000000000000000000000001cffffffe8000000000000000000000000000033cccccccccccccccccccccccccccccccccccccccccccccccccccc130000c5ffffffff19000000000000000000000000000000d7ffffffc1000000000000000000000049ffffffffaef8fffffff423000000000000000000000000000000000000004cffffffff32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019e9ffffff950000000002effffff3050000000000000003edffffef020000caffffff210000000000000000c9ffffff200000000000000000000044ffffffffff350010f9ffffffae000000000000000000000000a2ffffffff590001e7ffffffff47000000000000000000000000000000000fedffffffffffffffffffffffffffffffffffffffffffffff75000000000000000000000000000000000000000000000000000030e6fffffffffffffffffffffffffffffffffffffffffffffffe8d03000000000000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff48000000000005dafffffffffc4769ffffffa100000000000000000000000000000056fffffffffff922000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff48000000000000000034ffffffffff20000000000000000000000000000000000000000000adffffffffdf0000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff2800000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000089ffffffff6d00000000000000000000003cf2ffffffffe92c06e2ffffff6c00000000000000000000000000000000000000cefffffffffb1b00000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000e8ffffffff200000000000000000000000000000009affffffff6f000000000000000037ffffffffaf0000000060ffffffff5a000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000daffffffff07000000000000000000000000000000a2fffffff101000000000000000000000098ffffffffffffffff6a000000000000000000000000000000000000000044ffffffff2b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044fdffffff5700000000b3ffffff590000000000000053ffffffb20000008bffffff81000000000000002bffffffdf000000000000000000000095ffffffffe7010000b3fffffff70d0000000000000000000007f0fffffff60c00009cffffffff97000000000000000000000000000000000074ffffffffffffffffffffffffffffffffffffffffffffff570000000000000000000000000000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffab0500000000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a000000000066ffffffffff7700009effffff6c0000000000000000000000000000008effffffffff980000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a000000000000000034ffffffffff200000000000000000000000000000000000000000005dffffffffff2f0000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf0000000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000045ffffffffb80000000000000000000042f4ffffffffe82a000077ffffffd400000000000000000000000000000000000040ffffffffffff8500000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000faffffffff120000000000000000000000000000008bffffffff8200000000000000009fffffffff4b0000000009f0ffffffc1000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000e0ffffffff0400000000000000000000000000000081ffffffff1800000000000000000000000bdbffffffffffffbb0100000000000000000000000000000000000000003cffffffff230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081fffffff2250000005affffffe51b000000000019e2ffffff5a00000032fffffff63100000000000bc8ffffff860000000000000000000001e4ffffffff9b0000005bffffffff5b000000000000000000004effffffffab0000004fffffffffe6010000000000000000000000000000000008e2ffffffffe2ccccccccccccccccccccccccf8ffffffff3900000000000000000000000000000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffab01000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd70000000001ddffffffffdc04000008cbfffffa3c00000000000000000000000000000aeafffffffff71000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd7000000000000000034ffffffffff2000000000000000000000000000000000000000000021ffffffffff6b0000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff580000000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000005e0fffffffd2c000000000000000048f7ffffffffe6280000001afcffffff260000000000000000000000000000000000b0ffffffffffffeb08000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000f9ffffffff130000000000000000000000000000008cffffffff810000000000000010f6ffffffe303000000000095ffffffff2a0000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000cbffffffff160000000000000000000000000000006dffffffff28000000000000000000000000bbffffffffffff4d00000000000000000000000000000000000000000034ffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bdffffffd008000004ddffffffe5651b051b65e4ffffffdf0400000000bafffffff27723061454d3fffffff6170000000000000000000036ffffffffff4e0000000cf6ffffffb100000000000000000000a4ffffffff540000000af7ffffffff39000000000000000000000000000000000063ffffffffbc000000000000000000000000efffffffff1b000000000000000000000000000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffff7b000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d00000042ffffffffff61000000001eebffffe71a000000000000000000000000000079ffffffffff6000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000000034ffffffffff2000000000000000000000000000000000000000000000e3ffffffff9e000000000000000076ffffffffab000000000000000000000000002fffffffffea060000000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000066ffffffffc6050000000000004ef9ffffffffe5260000000000c7ffffff650000000000000000000000000000000023fdffffffffffffff63000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000e7ffffffff210000000000000000000000000000009affffffff6e000000000000006effffffff820000000000002fffffffff910000000000000033ccccccccccccccccccccd1fffffffbcccccccccccccccccccccc130000000000000000000000000000000000000000000000000000000000000000b2ffffffff410000000000000000000000000000005dffffffff36000000000000000000000066ffffffffffffffd80900000000000000000000000000000000000000002cffffffff15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017e7ffffff990000003dfcfffffffffffffffffffffffc3e000000000021f0ffffffffffffffffffffffff65000000000000000000000086fffffffff70a00000000acfffffff80f000000000000000007f1fffffff30900000000b5ffffffff89000000000000000000000000000000000003d6ffffffff41000000000000000000000efffffffffa02000000000000000000000000000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6fffffffffd370000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f00000098ffffffffe904000000000043fcffffc506000000000000000000000000000ffaffffffffae00000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f0000000000000034ffffffffff2000000000000000000000000000000000000000000000beffffffffc0000000000000000015f9fffffffa1600000000000000000000000095ffffffff89000000000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000001bdffffffff9f020000000055faffffffffe32400000000000083ffffffa50000000000000000000000000000000092ffffffffc7ffffffd2000000000000000000000033ccccccccccccccccccccd1fffffffbcccccccccccccccccccccc13000000d3ffffffff38000000000000000000000000000000b2ffffffff5a00000000000000d5fffffffe2000000000000000caffffffef0900000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078ffffffff82000000000000000000000000000000a6ffffffff450000000000000000000020f2fffffff0ebffffff91000000000000000000000000000000000000000025ffffffff0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040fcffffff5a0000005ffbfffffffffffffffffffa5f0000000000000041f1ffffffffffffffffffff86000000000000000000000000d7ffffffffb5000000000054ffffffff5e000000000000000050ffffffffa6000000000068ffffffffda00000000000000000000000000000000000051ffffffffc5000000000000000000002fffffffffde000000000000000000000000000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffce0300000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c000000daffffffff9b0000000000000075ffffff960000000000000000000000000000c4ffffffffe900000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c0000000000000034ffffffffff2000000000000000000000000000000000000000000000acffffffffdd000000000000000000a7ffffffff7600000000000000000000000af0fffffffe23000000000000000000fcffffffe8000000000000000000000099ffffffff4d0000000000000000000021ffffffffc20000000018dcffffffffae0f00005bfcffffffffe123000000000000004effffffcf0000000000000000000000000000000ff3ffffffec40ffffffff410000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000000aaffffffff66000000000000000000000000000000e1ffffffff320000000000003effffffffb9000000000000000065ffffffff6100000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffe404000000000000000000000000002bfcffffffff4400000000000000000001beffffffff6980fffffffe44000000000000000000000000000000000000001dffffffff06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007dfffffff3280000003ed0ffffffffffffffcf3d00000000000000000029bcffffffffffffffe15800000000000000000000000027ffffffffff68000000000009f3ffffffb40000000000000000a6ffffffff4f00000000001bffffffffff2b000000000000000000000000000000000000c8ffffffff4a0000000000000000004fffffffffffffffffffffffffffffffffffffffa8000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff5b0000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff58000014ffffffffff5e0000000000000000aaffffff610000000000000000000000000081ffffffffff1a00006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff580000a0ffffffffffffffffffffffffffffffffffffffff9c0000000000000000000000009affffffffe900000000000000000040ffffffffdb010000000000000000000060ffffffffbb00000000000000000000fcffffffe80000000000000000000000a5ffffffff5e000000000000000000002effffffffb3000000000021daffffffffe15462fdffffffffe021000000000000000024ffffffe700000000000000000000000000000074ffffffff9701ddffffffb00000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000006affffffffa200000000000000000000000000001dffffffffef02000000000000a6ffffffff5500000000000000000cf2ffffffc900000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d2ffffffff7300000000000000000000000004c7ffffffffff380000000000000000006dffffffffc4010fe4ffffffe31000000000000000000000000000000000000015fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b9ffffffd30900000002438eb4c5b38d41010000000000000000000000003583b0c5b7964e070000000000000000000000000078ffffffffff1c000000000000a5fffffff91100000000000008f3fffffff107000000000000ceffffffff7b00000000000000000000000000000000000040ffffffffce0100000000000000006fffffffffffffffffffffffffffffffffffffffa80000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffcc00000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff6100003affffffffff3000000000000000000cd4fffff7340000000000000000000000004effffffffff3c000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff610000a0ffffffffffffffffffffffffffffffffffffffff9c0000000000000000000000008cfffffffff100000000000000000000d7ffffffff4200000000000000000000c6ffffffff5300000000000000000000fcffffffe80000000000000000000000bfffffffff84000000000000000000004bffffffffa100000000000010b1ffffffffffffffffffffde1f00000000000000000000c5fffffc020000000000000000000000000003e1ffffffff2d0076fffffffd2200000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff1800000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000014f8ffffffea060000000000000000009affffffff31000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000001aacf5ec8908000000000000000000000000000058fffffffff83e0000000000000000000002a0ffffffffffff2b000000000000000024f5fffffff92a00004bffffffffa40000000000000000000000000000000000000dfffffff700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6cb8e5f9edcb84220000000015e5ffffff9d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9ffffffffce000000000000004dffffffff6100000000000052ffffffffa10000000000000081ffffffffcc00000000000000000000000000000000000000b8ffffffff5300000000000000008fffffffffffffffffffffffffffffffffffffffa80000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff3300000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff5800005bffffffffff1000000000000000000025f0ffffe11400000000000000000000003affffffffff5200006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff580000a0ffffffffffffffffffffffffffffffffffffffff9c0000000000000000000000009bffffffffe80000000000000000000071ffffffffa70000000000000000002bffffffffe70400000000000000000000fcfffffff10c00000000000000000005f0ffffffffd10000000000000000000086ffffffff77000000000000000057e2ffffffffffffffdc1d000000000000000000000000000000000000000000000000000000000056ffffffffbf000013f7ffffff8e00000000000000000000000000000000000000001cffffffe800000000000000000000000000000000bfffffffff780000000000000000000000000de5ffffffff4700000000000076ffffffff8c0000000000000000000034ffffffff98000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000007d7ffffffffa4000000000000000000000000000002c0fffffffff762010000000000000019b8ffffffffffffff0d0000000000000002c4ffffffff8100000000a1ffffffff55000000000000000000000000000000000005ffffffef0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059eafffffffffffffffa8e050000003dfcffffff5f000000000000000000000000000000000000000000000000000000000000000000000000000000000000001afeffffffff810000000000000006efffffffb7000000000000a8ffffffff4a0000000000000034ffffffffff1d00000000000000000000000000000000000030feffffffd50200000000000000afffffffffd9cccccccccccccccccccccccccccc8500000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff81000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b00006affffffffff01000000000000000000004dfeffffbd030000000000000000000026ffffffffff5d000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b0000000000000034ffffffffff2000000000000000000000000000000000000000000000adffffffffdc0000000000000000000011f7fffffff914000000000000000090ffffffff840000000000000000000000fcffffffffba05000000000000000053ffffffffffff50000000000000000009e4ffffffff3c0000000000000000000689ffffffffffda1b000000000000000000000000000000000000000000000000000000000000c7ffffffff52000000a1fffffff10c000000000000000000000000000000000000001cffffffe80000000000000000000000000000000046fffffffff62d000000000000000000000098ffffffffcf00000000000001dcffffffff280000000000000000000000cefffffff30d0000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000055ffffffffffff2a000000000000000000000000000019e9ffffffffffcd712d1306184897f6fffffea4ffffffe5000000000000000074ffffffffd8070000000010e6ffffffed190000000000000000000000000000000000fdffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffbe0800000078fffffff52a0000000000000000000000000000000000000000000000000000000000000000000000000000000000006affffffffff3400000000000000009efffffffb130000000009f4ffffffed050000000000000001e5ffffffff6d00000000000000000000000000000000000000a6ffffffff5c00000000000000cfffffffff3100000000000000000000000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffca000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d000074fffffffffb00000000000000000000000082ffffff8b0000000000000000000019ffffffffff5e000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d0000000000000034ffffffffff2000000000000000000000000000000000000000000000beffffffffc00000000000000000000000a2ffffffff730000000000000008edfffffffd1f0000000000000000000000fcffffffffffbc1500000000000014dfffffffc6ffffed2c0000000000000098ffffffffe40400000000000000000007d0ffffffffda1a00000000000000000000000000000000000000000000000000000000000037ffffffffe00300000037ffffffff6c000000000000000000000000000000000000001cffffffe80000000000000000000000000000000000b3ffffffffea370000000000000000048afffffffffd4200000000000045ffffffffc400000000000000000000000069ffffffff680000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000078ffffffffffff4d0000000000000000000000000000002ee4fffffffffffffffffffffffffffffe6985ffffffb90000000000000029f7fffffffe3e0000000000004dffffffffb60000000000000000000000000000000000f6ffffe1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050ffffffffffecd1ddfeffffffff9f00000001b5ffffffd50b0000000000000000000000000000000000000000000000000000000000000000000000000000000000bbffffffffe601000000000000000046ffffffff640000000054ffffffff9c0000000000000000009affffffffbe0000000000000000000000000000000000000023faffffffdc04000000000000efffffffff1200000000000000000000000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffff8030000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c000070ffffffffff0c000000000000000000000001b5ffffff560000000000000000002affffffffff53000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c0000000000000034ffffffffff2000000000000000000000000000000000000000000000e5ffffffff9e00000000000000000000003bffffffffd8000000000000005bffffffffb6000000000000000000000000fcfffffff6ffffe6710e0000034adafffffffd25ccfffff377140000002db0ffffffffff79000000000000000000008affffffffe11c00000000000000000000000000000000000000000000000000000000000000a8ffffffff760000000000ccffffffda010000000000000000000000000000000000001cffffffe8000000000000000000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff8000000000000000adffffffff5f0000000000000000000000000ef5ffffffd00000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000054ffffffffffff27000000000000000000000000000000001dc6fffffffffffffffffffffffff05100c7ffffff7900000000000003caffffffff9a0000000000000000a4ffffffff6700000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e0ffffffce3a000000178fffffffff3b00000013e2ffffffa10000000000000000000000000000000000000000000000000000000000000000000000000000000010faffffffff9a00000000000000000003eaffffffba00000000a9ffffffff440000000000000000004dfffffffffb120000000000000000000000000000000000000095ffffffff6500000000000efffffffff20000000000000000000000000000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff270000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd300000065ffffffffff1f00000000000000000000000010dcfffff42c00000000000000003dffffffffff40000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd3000000000000000034ffffffffff2000000000000000000000000000000000000000000023ffffffffff69000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e000000000000000000000000fcffffff87a6fffffffee3d5f2ffffffffffa2002bf6fffffffdded2e9ffffffffffffd2070000000000000000001df8fffffff62d000000000000000000000000000000000000000000000000000000000000001dfbfffffff612000000000062ffffffff4b0000000000000000000000000000000000001cffffffe80000000000000000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff980200000000000019fbfffffff00a000000000000000000000000009fffffffff3800000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000005d3ffffffff9f000000000000000000000000000000000000015addfffffffffffffffff696170018fdffffff350000000000007bffffffffe710000000000000000012e7fffffff424000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059ffffffda0d0000000000007effffffb5000000003afbffffff620000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffffff4d0000000000000000000097fffffffb1400000af4ffffffea0300000000000000000009f6ffffffff5f0000000000000000000000000000000000000017f4ffffffe207000000002fffffffffd30000000000000000000000000000000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff460000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff950000004bffffffffff35000000000000000000000000002df5ffffdb100000000000000058ffffffffff1d000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff95000000000000000034ffffffffff200000000000000000000000000000000000000000005fffffffffff2d0000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000fcffffff6704a1ffffffffffffffffffffdf12000043f4ffffffffffffffffffffffe1260000000000000000000095ffffffff7000000000000000000000000000000000000000000000000000000000000000008affffffff9b00000000000009eeffffffba0000000000000000000000000000000000001cffffffe80000000000000000000000000000000000000016c3fffffffffffffffffffffffffffffa7100000000000000007dffffffff97000000000000000000000000000039ffffffffa000000000000000000000000000001cffffffe80000000000000000000000000000000000000000000000000016a7f4ea84060000000000000000000000000000000000000000013b7ea9c1c7ba965a1000000079ffffffdd0100000000002ef9ffffffff55000000000000000000004fffffffffc6030000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2ffffff590000000000000006e4fffff90b0000000074fffffff62d0000000000000000000000000000000000000000000000000000000000000000000000000000adfffffffff60a000000000000000000003fffffffff67000055ffffffff960000000000000000000000b3ffffffffaf000000000000000000000000000000000000000084ffffffff6e000000004effffffffb4000000000000000000000000000000000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff5300000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff4300000028ffffffffff6c000000000000000000000000000058ffffffb40100000000000095fffffffff1010000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff43000000000000000034ffffffffff20000000000000000000000000000000000000000000b1ffffffffdc000000000000000000000000000ff5fffffff712000000008cffffffff7f00000000000000000000000000fcffffff4a000062f3ffffffffffffffd4220000000026c2ffffffffffffffffffb31a0000000000000000000002e9ffffffe504000000000000000000000000000000000000000000000000000000000000000befffffffff2e000000000000008dffffffff2a00000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000155d8fffffffffffffffffffffda121000000000000000002e1ffffffff32000000000000000000000000000000d3fffffff611000000000000000000000000001cffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000be7ffffff7b000000000005cfffffffffb3000000000000000000000000a7ffffffff7a0000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dafffffc0d000000000000000099ffffff420000000001b2ffffffd80c00000000000000000000000000000000000000000000000000000000000000000000000008f4ffffffffb3000000000000000000000002e5ffffffbd0000abffffffff3f000000000000000000000066fffffffff60a000000000000000000000000000000000000000eecffffffe80a0000006effffffff940000000000000000000000000000000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff6000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe40300000003f2ffffffffae0000000000000000000000000000008fffffff80000000000000d5ffffffffb5000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe403000000000000000034ffffffffff20000000000000000000000000000000000000000024fdffffffff8300000000000000000000000000009dffffffff6f00000006ebfffffffc1c00000000000000000000000000fcffffd30c000000157bc5eefbecbe6908000000000000003d94cdf0fae9ce8d3800000000000000000000000033ffffffff8200000000000000000000000000000000000000000000000000000000000000006cffffffffc0000000000000000024feffffff9800000000000000000000000000000000001cffffffe80000000000000000000000000000000000000000000001357ebed8eef9e5cfa85f17000000000000000000004dfffffffb8f0000000000000000000000000000000042eeffffff6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008afffffff416000000000082ffffffffd91a00000000000000000000000010c7fffffffa3100000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f2ffffe300000000000000000070ffffff5b000000000011e0ffffffa50000000000000000000000000000000000000000000000000000000000000000000000004effffffffff6700000000000000000000000090fffffffc170bf5ffffffe602000000000000000000000019feffffffff51000000000000000000000000000000000000000073ffffffff770000008effffffff75000000000000000000000000000000000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff5a00000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff760000000000baffffffffee07000000000000000000000000000004bffffffe4d0000000029ffffffffff6e000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff7600000000000000000034ffffffffff20000000000000000000000000000000000000000095fffffffff919000000000000000000000000000036ffffffffd400000057ffffffffb1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054ffffffff4b0000000000000000000000000000000000000000000000000000000000000002dbffffffff53000000000000000000b9fffffff512000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b62a6d1eefbf4dfc995521000000000000000000000000000000000000000000009b62f0000000000004dfeffffff85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feffffd800000000000000000064ffffff6a00000000000037faffffff6600000000000000000000000000000000000000000000000000000000000000000000009effffffffff1b00000000000000000000000038ffffffff6956ffffffff9100000000000000000000000000cbffffffffa1000000000000000000000000000000000000000007e2ffffffed0e0000aeffffffff560000000000000000000000000000000000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4e0000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d00000000006bffffffffff6800000000000000000000000000000016e3fffff0250000009cfffffffffc1600000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d00000000000000000034ffffffffff20000000000000000000000000000000000000003afcffffffff9500000000000000000000000000000000ceffffffff3a0000bcffffffff49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069ffffffff2f000000000000000000000000000000000000000000000000000000000000004effffffffe2030000000000000000004effffffff76000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018f6fffff4ae1200000000000000000000000000000000000000000000000357c9fffffffffffffffffffffff79621000000000000000000000000000000000000007efff86f0000000026efffffffe00e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0ffffe500000000000000000072ffffff5b0000000000000070fffffff73000000000000000000000000000000000000000000000000000000000000000000003ebffffffffcd0000000000000000000000000000deffffffb7a9ffffffff3a000000000000000000000000007effffffffee04000000000000000000000000000000000000000061ffffffff800000ceffffffff370000000000000000000000000000000000000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff33000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff6100000000000016f9ffffffffdf0400000000000000000000000000000036f8ffffd40b001ff8ffffffffaa000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff610000000000000000000034ffffffffff200000000000000000000000000000000000000fdfffffffffef140000000000000000000000000000000067ffffffff9d0021feffffffe0020000000000000000000000000000000000000063fffbcb2f000000000000000000000000000000000000000064ffff9c00000000000000000000005bffffffff3f0000000000000000000016bcbb8b5b06000000000000000000000000000000beffffffff780000000000000000000002e0ffffffe2030000000000000000000000000000001cffffffe80000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000000126bb2e0f8fae9cc934a02000000000000000000000000008effffffffba0000000000000000000000000000000000000000000054dcfffffffffffffffffffffffffffffffb7b020000000000000000000000000000000000aeffffffb515003decfffffffd3d00000000000000000000000000000000054a73714502000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d8fffffe110000000000000000a0ffffff430000000000000000aeffffffda0d000000000000000000000000000000000000000000000000000000000000000040ffffffffff80000000000000000000000000000088fffffff3edffffffe2010000000000000000000000000031ffffffffff43000000000000000000000000000000000000000003d5fffffff21100eeffffffff170000000000000000000000000000000000000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008affffffffff100000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb00000000000000000a0ffffffffff820000000000000000000000000000000065ffffffaa03c3fffffffffe2f0000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb0000000000000000000000034ffffffffff20000000000000000000000000000000000012c4ffffffffff5600000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000000000000001c7ffffe4100000000000000000000000000000000000000064ffff9c00000000000000000000003bffffffff7e0000000000000000000084fffffffa0500000000000000000000000000002ffffffffff713000000000000000000000079ffffffff5400000000000000000000000000000000000000000000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000a7ff5ffffffffffffffffffde5400000000000000000000000016f5ffffffff440000000000000000000000000000000000000000a3ffffffffffffffffead6d3e7fdffffffffffffba0e0000000000000000000000000000000014b4ffffffe784f9ffffffff6c000000000000000000000000000000000093ffffffff77000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fffffff620000000000000009ebfffffb0c000000000000000010deffffffa9000000000000000000000000000000000000000000000000000000000000000090ffffffffff33000000000000000000000000000031ffffffffffffffff8c000000000000000000000000000000e3ffffffff9300000000000000000000000000000000000000000050ffffffff760dfffffffff7010000000000000000000000000000000000000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffdb0000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd712000000000000000026fafffffffffe4c000000000000000000000000000000009bffffffc9ffffffffff9b0000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd712000000000000000000000034ffffffffff200000000000000000000000000000000023d8ffffffffff920000000000000000000000000000000000000098ffffffff46d2fffffffb1800000000000000000000000000000000000000000031fcffff930000000000000000000000000000000000000064ffff9c000000000000000000000004efffffffe80d000000000000000016ebffffffc8000000000000000000000000000000a0ffffffff9d00000000000000000000000015f9ffffffc300000000000000000000000000000000000000000000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff08000033e0ffffffffffffffffffffffffff9d0200000000000000000000008affffffffc400000000000000000000000000000000000000007dffffffffffcc681c000000001257c5ffffffffffbb05000000000000000000000000000000000065f3ffffffffffffff820000000000000000000000000000000000008affffffff6e000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055ffffffe11200000000000089ffffffbc0000000000000000000033f9ffffff6a00000000000000000000000000000000000000000000000000000000000000e0ffffffffe501000000000000000000000000000000d8ffffffffffffff3500000000000000000000000000000097ffffffffe300000000000000000000000000000000000000000000c7ffffffe02fffffffffd8000000000000000000000000000000000000000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff9e000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe020000000000000000000008cfffffffffff24b00000000000000000000000000000007c9ffffffffffffffe311000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe02000000000000000000000000034ffffffffff200000000000000000000000000000118bf8ffffffffffa9020000000000000000000000000000000000000030ffffffffb1ffffffffac000000000000000000000000000000000000000000000095fffffc3100000000000000000000000000000000000064ffff9c00000000000000000000000094ffffffffb60a00000000000007c1ffffffff68000000000000000000000000000018f9ffffffff2f00000000000000000000000000a5ffffffff33000000000000000000054785b8daf1fbf5e1cc9c57130000000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080036f6fffffffffffee0d0defeffffffffff97000000000000000000000014f3ffffffff440000000000000000000000000000000000000003c2ffffcf460000000000000000000059f5ffffffff9b000000000000000000000000000000000654cbfffffffffffe71000000000000000000000000000000000000007dffffffff62000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ddffffffd43f0100001a96ffffffff4700000000000000000000006cfffffff832000000000000000000000000000000000000000000000000000000000031ffffffffff990000000000000000000000000000000081ffffffffffffde000000000000000000000000000000004affffffffff340000000000000000000000000000000000000000003fffffffff8bffffffffb90000000000000000000000000000000000000000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff4e000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b000000000000000000000009d4fffffffffffd7803000000000000000000000000000037fffffffffffff83600000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b0000000000000000000000000034ffffffffff200000000000000000000000124d9bf0ffffffffffff9803000000000000000000000000000000000000000000c9ffffffffffffffff44000000000000000000000000000000000000000000000010e9ffffc601000000000000000000000000000000000064ffff9c00000000000000000000000016f1ffffffffd6550900000449d1ffffffffd706000000000000000000000000000082ffffffffc200000000000000000000000000003affffffffa100000000000000188deffffffffffffffffffffffff8951d000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080009deffffffdc6812000000147df8ffffffff46000000000000000000000086ffffffffc400000000000000000000000000000000000000000f77570200000000000000000000000038f7ffffffff3b0000000000000000000000000e549eecffffffffffffffffa41000000000000000000000000000000000000070ffffffff560000000000000000000000000099ccccccccccccccccccccfdfffff9cccccccccccccccccccc850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfeffffffffeed2deffffffffffaf00000000000000000000000000aaffffffdd0f0000000000000000000000000000000000000000000000000000000082ffffffffff4c0000000000000000000000000000000029ffffffffffff870000000000000000000000000000000008f5ffffffff8500000000000000000000000000000000000000000000b6fffffff3ffffffffedcccccccccccccccccccccccccccccccccccccccc2f0000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffec0700000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a0000000000000000000000000028edffffffffffffd85a02000000000000000000001279f3fffffffffff94d000000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a000000000000000000000000000034ffffffffffd2cccccccccccccccccdd8edfffffffffffffffff360000000000000000000000000000000000000000000000062ffffffffffffffdc0100000000000000000000000000000000000000000000000060ffffff620000000000000000affeffffffffffffffffffffffffff7c0000000000000000000049fbfffffffffff8dad4f1fffffffffff233000000000000000000000000000008eaffffffff54000000000000000000000000000000cffffffff917000000001091f7fffffffffffffffffffffffffffffff8650000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff08000041f8f57c06000000000000003efaffffffc5000000000000000000000012f1ffffffff4400000000000000000000000000000000000000000000000000000000000000000000000068ffffffffca000000000000000000000088fafffffffffffffffdd5ffffffe546000000000000000000000000000000000063ffffffff4900000000000000000000000000bfffffffffffffffffffffffffffffffffffffffffffffffffa70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077ffffffffffffffffffffffce0f000000000000000000000000000edbffffffad00000000000000000000000000000000000000000000000000000000d3fffffffff6090000000000000000000000000000000000d2ffffffffff300000000000000000000000000000000000b0ffffffffd6000000000000000000000000000000000000000000002ffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c0000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff820000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e000000000000000000000000000000003af2ffffffffffffffe8a45d341f090a1a366cabf8ffffffffffffffa900000000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e0000000000000000000000000000000034fffffffffffffffffffffffffffffffffffffffffffffffda11a0000000000000000000000000000000000000000000000000af0ffffffffffff760000000000000000000000000000000000000000000000000001c4ffffea110000000000000fffffffffffffffffffffffffffffff9c000000000000000000000051f1ffffffffffffffffffffffffe83c00000000000000000000000000000064fffffffdad020000000000000000000000000000003becffffff7f00000035defffffffffffffffee9d7d3e5feffffffffffff9800000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000d0e0000000000000000000096fffffffe1c000000000000000000000083ffffffffc400000000000000000000000000000000000000000000000000000000000000000000000002d9ffffffff3e00000000000000000009fffffffffffffffdab290172f9fffffb1a0000000000000000000000000000000056ffffffff3d000000000000000000000000009bffffffffffffffffffffffffffffffffffffffffffffffff84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057e9fffffffffffffffda00b00000000000000000000000000000030f7ffffff6e000000000000000000000000000000000000000000000000000023ffffffffffb100000000000000000000000000000000000078ffffffffd800000000000000000000000000000000000061ffffffffff2700000000000000000000000000000000000000000000a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffef13000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b0460000000000000000000000000000000000000031e6fffffffffffffffffffffffffffffffffffffffffffffffffffd3500000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b04600000000000000000000000000000000000034ffffffffffffffffffffffffffffffffffffffffffe58d2100000000000000000000000000000000000000000000000000000093fffffffffff91500000000000000000000000000000000000000000000000000002ffcffff9600000000000015efffff8728282828287cffffab28281800000000000000000000000023acfefffffffffffffffffca3160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f9ffffffffffffbb5715000000001357c5ffffffffff7c000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff0800000000000000000000000000000048ffffffff47000000000000000000000010f0ffffffff440000000000000000000000000000000000000000000000000000000000000000000000006fffffffff9300000000000000000000e1ffffffffda7e1d0000000031d8ffe4060000000000000000000000000000000049ffffffff31000000000000000000000000001cc1f7f0dec1a17d593a1efaffffe724456687a8cae7f5f6b8130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6cb8e4f9edcf8b2d00000000000000000000000000000000000052ebfffff9350000000000000000000000000000000000000000000000000074ffffffffda2f0000000000000000000000000000000000000db8fcffe44500000000000000000000000000000000000008affbffffff770000000000000000000000000000000000000000000022faffffffffffffffffffffffffffffffffffffffffffffffffffffff3c00000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff6e0000000000000000000000000000000000000000155792bcddf0faf9eedab88b500f0000000000000000000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffdffdffffcd0300000000000000000000000000000000000000155792bcddf0faf9eedab88b500f000000000000000000000000000000000000000034fffffffffffffffffffffffffffffef4e8cba974370100000000000000000000000000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000000000000000000091fffffd3300000000000053fffff62d0000000064ffff9c00000000000000000000000000000000002777badef2f8e3bf7a2300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c9ffffffffcb380000000000000000000063f9fffffffe400000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000000000000000000000000003affffffff5f0000000000000000000000007fffffffffc40000000000000000000000000000000000000000000000000000000000000000000000002affffffffd20000000000000000000090dda86d2400000000000000000b9c5100000000000000000000000000000000003dffffffff24000000000000000000000000000000000000000000000008fffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffbd020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054ddfffffffffffffffffffffffffffffffffff57a0799ffffff6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ee7ffffc90100000000000095ffffd90d00000064ffff9c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032fcfffd820400000000000000000000000058ffffffffc70000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff0800000000000000000000000000000064ffffffff540000000000000000000000000eeeffffffff44000000000000000000000000000000000000000000000000000000000000000000000000f8fffffff80200000000000000000001000000000000000000000000000000000000000000000000000000000000000030ffffffff18000000000000000000000000000000000000000000000016fffffffe0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffe0180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000357bdfcffffffffffffffffffffffffdc7817000011eafffff11a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005dffffff6500000000000007cfffffa700000064ffff9c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059ae41000000000000000000000000000000b0ffffffff4100000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff0800000000000000000000000000000bdaffffffff37000000000000000000000000007bffffffffc4000000000000000000000000000000000000000000000000000000000000000000000000e5ffffffff1100000000000000000000000000000000000000000000000000000000000000000000000000000000000023ffffffff0c000000000000000000000000000000000000000000000023ffffffff0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009437aaacbe6f3fdfaf1e1c6a4753f050000000000000000000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc80000000000000000000000000000000004437db0d7e9f8f7e7d4aa783b010000000000000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe82800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000175893bcddf0faf5e3d1aa6f3401000000000060ffffffa9000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1ffffec1300000000000026f3ffff69000064ffff9c000000000024ffffffffffffffffffffffffffffffffffffffffffffffffffff280000000000000000000000000000000000000041cbf3c237000000000057d4f2b8280000000000000000000000000000000000000000000000000000000044ffffffff9000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000000000000000000000019c4ffffffffe603000000000000000000000000000decffffffff440000000000000000000000000000000000000000000000000000000000000000000000e0ffffffff1600000000000000000000000000000000000000000000000000000000000000000000000000000000000016fffffffe01000000000000000000000000000000000000000000000031ffffffff1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000352aff5fffffffffffffffffffffffffffff2a73d000000000000000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc800000000000000000000000000002a97ebffffffffffffffffffffffffe48d1f00000000000000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff980000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffda2200000000000000000000000000000000000000000000000000000035c7fbffffd217000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000beffffff47000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff980000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff9800000000000000000000000000000000000000000024e2fffff7b825000000000000000000000000000000000000000000000000000000000000002cfbffff99000000000000005bfffff8320064ffff9c000000000021ffffffffffffffffffffffffffffffffffffffffffffffffffff2800000885c6100000000000000000000000002cf8fffffff32300000046ffffffffe31000000000000000000000000000000000000000000000000000000005fbffffffd800000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff0800000000000000000000000d78eeffffffffff7300000000000000000000000000000078ffffffffc40000000000000000000000000000000000000000000000000000000000000000000000f3fffffffe04000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000009fffffff30000000000000000000000000000000000000000000000003effffffff26000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056be2ffffffffffffffffffffffffffffffffffffffffcf6304000000000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc800000000000000000000000027abfefffff9ba85553f2f2e3b5983c0f9fffffa9d1b00000000000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff31000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffffa60e00000000000000000000000000000000000000000000000000000172faffffffcd13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ac8fcffdc0800000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff3100000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff310000000000000000000000000000000000000000000020ddfffffff35c000000000000000000000000000000000000000000000000000000000000008efffffd36000000000000009effffdd0f63ffff9c000000000003f3ffffffffffffffffffffffffffffffffffffffffffffffffff28000077ffffca0e000000000000000000000084ffffffffff7a000000a6ffffffffff5600000000000000000000000000000000000000000000000000000000e5fffffffb01000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000000000000000d7deeffffffffffffbc030000000000000000000000000000000beaffffffff4400000000000000000000000000000000000000000000000000000000000000000025ffffffffec00000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000b8dc4c2b4987959381700fbffffe7011a3b5c7c9bb6c3c28506000000000000000000000000004cffffffff33000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041dafffffffffffffffffee8d7cfd6e4f2feffffffffffffffffd0350000000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc8000000000000000000000376f7ffffcf6010000000000000000000001169e0fffff1660000000000000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffd34600000000000000000000000000000000000000000000000000000014b4ffffffffc60f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc90000000000000000000000000000000000000000000000001bd9ffffffff9f0b00000000000000000000000000000000000000000000000000000000000de6ffffcb020000000000000ad5ffffae5dffff9c0000000000006fffffffffffffffffffffffffffffffffffffffffffffffffff1a000018e8ffffa7000000000000000000000080ffffffffff75000000a2ffffffffff5100000000000000000000000000000000000000000000000000000000f0ffffffff14000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff08000000000000000473ebffffffffffffffb40a000000000000000000000000000000000074ffffffffc40000000000000000000000000000000000000000000000000000000000000000006fffffffffb500000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000088fffffffffffffffffff5fefffffcf7ffffffffffffffffff71000000000000000000000000005affffffff40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048efeffffffffffeea6632f07000000000000032a5a8bcafffffffffffd8d00000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc800000000000000000011beffffde4e0000000000000000000000000000000771ecffffad0a0000000000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff620000000000000000000000000000000253bafcfffffffffffffffffffffffff9b34b010000000000000000000000000000000000000000000000000000003fe4ffffffffbf0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff62000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff620000000000000000000000000000000000000000000000000017d3ffffffffd72e00000000000000000000000000000000000000000000000000000000005affffff68000000000000002bf6ffffbaffff9c000000000000007afffffffffc94aad6eefffffffffffffffffffffffffff893000000004bffffff550000000000000000000026f6fffffff01e0000003ffeffffffdf0c0000000000000000000000000000000000000000000000000000001effffffffff1b000000acfffffffffffffffffffffff7e6d5ba83490d00000000000000000000e4ffffffff080000000000000ec1ffffffffffffffed6b0100000000000000000000000000000000000009e7ffffffff440000000000000000000000000000000000000000000000000000000000000006e0ffffffff6e00000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c00000000bdffffffffffffffffffffffffffffffffffffffffffffffffa50000000000000000000000000067ffffffff4d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eb9ffffffffffc355050000000000000000000000000000002076d9ffffffaf00000000000038ffffffff740000000000000000000000000002465f380000000000000000000000000000e4ffffffc8000000000000000022d9ffff980b00000000000000000000000000000000000012baffffcb170000000000000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a000000000000000000000000000000000000155792bcddf0faf9eedab88d521000000000000000000000000000000000000000000000000000000000027ffcffffffffb8090000000000000000000000000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a00000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a000000000000000000000000000000000000000000000000000013cefffffffff76a0000000000000000000000000000000000000000000000000000000000beffffed140000000000000065ffffffffff9c000000000000000078ffffffffe62800000000000000000000000000000000000000000000b8ffffe507000000000000000000003bc7f1be31000000000051d1f0b4230000000000000000000000000000000000000000000000000000000093fffffffffe05000000acfffffffffffffffffffffffffffffffffff395290000000000000000e4ffffffff08000000000000b5fffffffffffff1821000000000000000000000000000000000000000000070ffffffffc4000000000000000000000000000000000000000000000000000000000000009bfffffffff41600000038ffffffffff240000000000000000000000000000000000000000000000c0ffffffffffffffffffffffffffffffffffffffffffffffffa80000000000000000000000000075ffffffff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bc5ffffffffdb4800000000000000000000000000000000000000000258d3ff4300000000000038ffffffff7400000000000000000000000000a1ffffff7100000000000000000000000000e4ffffffc80000000000000018defffc6b000000000000000000000000000000000000000000038fffffcf0e0000000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001abfffffffffffaf0700000000000000000000000000000000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff98000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff93000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff930000000000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000000000000000000000000000000000000029faffff9c0000000000000000a6ffffffff9c00000000000000000076ffffffffe72900000000000000000000000000000000000000000051ffffff5b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063ffffffffffe100000000acfffffffffffffffffffffffffffffffffffffffd8c07000000000000e4ffffffff0800000000003cfffffffffffe9612000000000000000000000000000000000000000000000008e5ffffffff44000000000000000000000000000000000000000000000000000000000aa1ffffffffff880000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000083ffffffff6600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b7ffffffff9909000000000000000000000000000000000000000000000000160000000000000038ffffffff7400000000000000000000000043fffffffff61b000000000000000000000000e4ffffffc80000000000000bd0fffe5c00000000000000044389a7bfc7bb9d6d28000000000000007bffffbf04000000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036a808080807c530200000000000000000000000000000000000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff310000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c0000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c0000000000000000000000000000000000000000000000000000000000065c7d808080805f000000000000000000000000000000000000000000000000000000008bfffffe38000000000000000ddbffffff9c0000000000000000000074ffffffffe82a000000000000000000000000000000000000000013ffffffaa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169dffffffffffff9000000000acffffffffedccccccccccccd5e7fcffffffffffffffd41a0000000000e4ffffffff08000000000079fffffffffe5600000000000000000000000000000000000000000000000000006dffffffffc500000000000000000000000000004591dbe4914e1600000000012f7ce9ffffffffffd00b0000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000090ffffffff730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffffffe6f0000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000000002d0ffffffffff9d000000000000000000000000e4ffffffc800000000000099ffff7b0000000000000a7deeffffffffffffffffffc537000000000000a4ffff8000000000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc400000000000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc400000000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bcffffffffffffffffffff7400000ce4ffffce020000000000000031f8ffff9c000000000000000000000072ffffffffe92c0000000000000000000000000000000000000000f6ffffdc0000acffffffffa4000000000000000000000000000000000000000000000000000000000000000000000000000000003595f5fffffffffffffa2a00000000acffffffffa400000000000000000d48a2faffffffffffd41200000000e4ffffffff0800000000008cffffffffb100000000000000000000000000000000000000000000000000000007e3ffffffff4500000000000000000000000000dbfffffffffffff0d9d0dff3ffffffffffffffe31e000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000004dcaf2f0c43d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032fcffffff6d000000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000000061fffffffffffffd2d0000000000000000000000e4ffffffc8000000000049ffffbc0100000000003ae4fffffffffffffffffffffffffe99050000000008cbfffc35000000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d000000000000000000000000000000000358befdfffffffffffffffffffffffffab44c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff6200000000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d00000000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bcffffffffffffffffffff7400000057ffffff6b00000000000000000000000000000000000000000000000071ffffffffea2d0000000000000000000000000000000000000afefffff10000acffffffffa4000000000000000000000000000000000000000000000000000000000000000000000000044292e1ffffffffffffffffff860000000000acffffffffa4000000000000000000000021c7ffffffffffb300000000e4ffffffff0800000000006dffffffff960000000000000000000000000000000000000000000000000000000069ffffffffc500000000000000000000000000aeffffffffffffffffffffffffffffffffffbd1500000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c8ffffff9800000000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000000ae5ffffffffffffffb60000000000000000000000e4ffffffc80000000002d5fff41e000000000052f7ffffffffffffffffffffffffffffffb3080000000035feffbf0000000000000000007bffffffffb600000000000000000000000000000000003cffffffffed0800000000000000000000000000000055deffffffffffffffffffffffffffffffffffffd447000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a000000000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000b4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc0000000000000000003a505050c9ffffea5050502400000000bbffffef160000000000000000000000000000000000000000000000006fffffffffeb2e000000000000000000000000000000000046ffffffeb0000acffffffffa4000000000000000000000000000000000000000000000000000000000000000000003291eaffffffffffffffffffffffa6020000000000acffffffffa400000000000000000000000005b9ffffffffff47000000e4ffffffff08000000000019f8ffffffe61100000000000000000000000000000000000000000000000000000006e0ffffffff4500000000000000000000000081ffffffffffffffffffffffffffffffd45a020000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fffffffda0800000000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000007fffffffffcbffffffff4200000000000000000000e4ffffffc8000000005bffff8a000000000033f9ffffffffe67d3412020c2b6fd0ffffffe31c0000000000a9ffff43000000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e0000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff98000000000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff93000000000000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e000000000000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000b4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc00000000000000000000000000b0ffffe0000000000000000027f9ffff9f000000000000000000000000000000000000000000000000006effffffffec3000000000000000000000000000000000adffffffcc0000acffffffffa4000000000000000000000000000000000000000000000000000000000000000157d2fffffffffffffffffffffffffc8003000000000000acffffffffa4000000000000000000000000000fe7ffffffffc4000000e4ffffffff080000000000006fffffffffcc1900000000000000000000000000000000000000000000000000000065ffffffffc500000000000000000000000054ffffffeb7ba4cbe2f0fbecd8bc7d390100000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c7ffffff460000000000000469c0ecf9e1bb6610000000000b72cbedfae2ae5b0500000000000000000038ffffffff7400000000000000000019f4ffffffe823fcffffffcd01000000000000000000e4ffffffc800000000c7fff715000000000bddffffffff980b00000000000000015fedeb2800000000000022fcffaf000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff280000000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb23000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff310000000000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff28000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff2800000000000000b4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc00000000000000000000000000b0ffffe000000000000000000088fffffe3a000000000000000000000000000000000000000000000000006cffffffffed31000000000000000000000000000026ffffffff910000acffffffffa40000000000000000000000000000000000000000000000000000000000001dc3fffffffffffffffffffffffffeb12e0000000000000000acffffffffa400000000000000000000000000006ffffffffffd170000e4ffffffff080000000000000081ffffffffe84e000000000000000000000000000000000000000000000000000004deffffffff45000000000000000000000027fffffffb05000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002cffffffc300000000000015ccffffffffffffffef61000014d8ffffffffffffffdb3f000000000000000038ffffffff740000000000000000009dffffffff7700a4ffffffff5b000000000000000000e4ffffffc800000023ffffab000000000075ffffffff8c000000000000000000000011170000000000000000b4fff910000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf0000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe82800000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000000000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc40000000000000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf0000000000000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf00000000000000008fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaf00000000000000000000000000b0ffffe00000000000000000000be2ffffd003000000000000000000000000000000000000000000000000006afeffffffee330000000000000000000000000014d3ffffff370000acffffffffa4000000000000000000000000000000000000000000000000000000000028eaffffffffffffffffffffffe3832200000000000000000000acffffffffa4000000000000000000000000000016feffffffff5f0000e4ffffffff08000000000000000051f0ffffffff9c070000000000000000000000000000000000000000000000000062ffffffffc5000000000000000000000003f7ffffff2c000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087ffffff51000000000002c3ffffffffffffffffffff89009bfffffffffffffffffffe7c0000000000000038ffffffff7400000000000000002efdffffffe60c0025faffffffe0070000000000000000e4ffffffc800000075ffff530000000007e7ffffffcb040000000000000000000000000000000000000000005bffff5c000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff5800000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe0180000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff6200000000000000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d0000000000000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff580000000000000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe00000000000000000000053ffffff6e000000000000000000000000000000000000000000000000000068feffffffef33000000000000000000000000000143a9b7000000acffffffffa40000000000000000000000000000000000000000000000000000000010e1ffffffffffffffffffec9c4703000000000000000000000000acffffffffa4000000000000000000000000000000d7ffffffff800000e4ffffffff0800000000000000000022cbffffffffc81a00000000000000000000000000000000000000000000000004dbffffffff450000000000000000000000cdffffff58000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0ffffed06000000000058fffffffc7b1a052170eaffff78f4ffffc13409185ad4ffffff7c00000000000038ffffffff740000000000000000bbffffffff6100000093ffffffff730000000000000000e4ffffffc8000000acffff150000000047ffffffff4c0000000000000000000000000000000000000000000019ffff9400000000000000000076ffffffffab000000000000000000000000002fffffffffea06000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb010000000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a000000000000000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000000000000000000076ffffffffab000000000000000000000000002fffffffffea06000000000000000000000000000076ffffffffab000000000000000000000000002fffffffffea0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe00000000000000000000000b8fffff017000000000000000000000000000000000000000000000000000066feffffffee3000000000000000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000000000000091fffffffffffffff6a34504000000000000000000000000000000acffffffffa4000000000000000000000000000000beffffffff980000e2ffffffff0c000000000000000000000695ffffffffd7100000000000000000000000000000000000000000000000005effffffffc50000000000000000000000a0ffffff83000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffdffffa8000000000000b6ffffff85000000000018d4fffffffff2140000000009a8ffffff46000000000038ffffffff74000000000000004affffffffce0200000013f0ffffffee1100000000000000e4ffffffc8000000e0ffe200000000008affffffe9010000000000000000000000000000000000000000000000e7ffca00000000000000000015f9fffffffa1600000000000000000000000095ffffffff8900000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff93000000000000000000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000000000000000000015f9fffffffa1600000000000000000000000095ffffffff8900000000000000000000000000000015f9fffffffa1600000000000000000000000095ffffffff890000000000000000000000000097fff7b4160000000000000000000000004cffffffffffffffffffffffffffc00000000000000000000000000000b0ffffe0000000000000000000000025f8ffffa200000000000000000000000000000000000000000000000000000066feffffffec2d000000000000000000000000000000000000acffffffffedccccccccccccc3b3a28751180000000000000000000000000000000ef9fffffffffff98714000000000000000000000000000000000000acffffffffa4000000000000000000000000000000b8ffffffff9f0000d0ffffffff1e0000000000000000000000008fffffffff9d00000000000000000000000000000000000000000000000003d8ffffffff450000000000000000000073ffffffaf000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040ffffff6c000000000000eefffffc1100000000000021f2ffffffc000000000000005c1ffffe10d0000000038ffffffff7400000000000003d5ffffffff3f000000000075ffffffff8c00000000000000e4ffffffc8000001fdffbf0000000000c2ffffffaa000000000000000000000000000000000000000000000000c1ffe900000000000000000000a7ffffffff7600000000000000000000000af0fffffffe23000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed1100000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff2800000000000000000000000000000000a7ffffffff7600000000000000000000000af0fffffffe2300000000000000000000000000000000a7ffffffff7600000000000000000000000af0fffffffe230000000000000000000000000011ebffffbc0000000000000000000000003affffffffffffffffffffffffffc00000000000000000000000000000b0ffffe000000000000000000000000085ffffff3d0000000000000000000000000000000000000000000000000000006bffffffffea290000000000000000000000000000000000acffffffffffffffffffffffffffffffffffd1670b00000000000000000000000059ffffffffffe3300000000000000000000000000000000000000000acffffffffa4000000000000000000000000000000cdffffffff880000b9ffffffff3900000000000000000000000003d1fffffffd190000000000000000000000000000000000000000000000005affffffffc50000000000000000000046ffffffdb000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ffffff3f000000000008ffffffe000000000000000007dffffffbc0000000000000025fbffff720000000038ffffffff7400000000000067ffffffffae00000000000007dffffffff81f000000000000e4ffffffc8000010ffffaf0000000000daffffff83000000000000000000000000000000000000000000000000b0fffa0000000000000000000040ffffffffdb010000000000000000000060ffffffffbb00000000000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d0000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc40000000000000000000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf000000000000000000000000000000000040ffffffffdb010000000000000000000060ffffffffbb000000000000000000000000000000000040ffffffffdb010000000000000000000060ffffffffbb00000000000000000000000000000063ffffff5b000000000000000000000001b9ffffffffffffffffffffffffba0000000000000000000000000000b0ffffe000000000000000000000000009e0ffffd2040000000000000000000000000000000000000000000000000000007cffffffffe11900000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffee6200000000000000000000008bfffffffff627000000000000000000000000000000000000000000acffffffffa4000000000000000000000000000008f7ffffffff6f000093ffffffff75000000000000000000000000006effffffff5c00000000000000000000000000000000000000000000000002d5ffffffff4500000000000000000019fffffffd090000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084ffffff1d00000000000bffffffcf000000000000000010f9ffffd400000000000000009fffffde0200000038ffffffff7400000000000de9fffffff9230000000000000058ffffffffa4000000000000e4ffffffc800001bffffa30000000000eeffffff70000000000000000000000000000000000000000000000000a8ffff0700000000000000000000d7ffffffff4200000000000000000000c6ffffffff53000000000000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe90500000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d0000000000000000000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff58000000000000000000000000000000000000d7ffffffff4200000000000000000000c6ffffffff53000000000000000000000000000000000000d7ffffffff4200000000000000000000c6ffffffff5300000000000000000000000000000001c7ffffe70e00000000000000000000000abcfffff69dbacbccccccccc74f0000000000000000000000000000b0ffffe00000000000000000000000000050ffffff710000000000000000000000000000000000000000000000000000000097ffffffffcc07000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffb30c000000000000000000a2ffffffff9200000000000000000000000000000000000000000000acffffffffa400000000000000000000000000004dffffffffff3100004affffffffc8000000000000000000000000004fffffffff740000000000000000000000000000000000000000000000000057ffffffffc500000000000000000000ecffffff320000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093ffffff08000000000000f3ffffe6000000000000000000b3fffffb090000000000000041ffffff3f00000038ffffffff74000000000085ffffffff8b000000000000000000c8fffffffe320000000000e4ffffffc800000effffac0000000000edffffff71000000000000000000000000000000000000000000000000b6fff9000000000000000000000071ffffffffa70000000000000000002bffffffffe704000000000000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff48000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000000000000000000000000076ffffffffab000000000000000000000000002fffffffffea0600000000000000000000000000000000000071ffffffffa70000000000000000002bffffffffe70400000000000000000000000000000000000071ffffffffa70000000000000000002bffffffffe7040000000000000000000000000000000031fcffff9000000000000000000000000008b8ffffc70f000000000000000000000000000000000010000000b0ffffe00000000000000000000000000000b5fffff21900000000000000000000000000000000000000000000000000000004bfffffffff91000000000000000000000000000000acffffffffa4000000000000091a3d79d0ffffffffffffbe080000000000000000adffffffff5700000000000000000000000000000000000000000000acffffffffa40000000000000000000000000001cbffffffffe500000008f1ffffffff410000000000000000000000006fffffffff620000000000000000000000000000000000000000000000000001d1ffffffff45000000000000000000bfffffff5e0000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009efffffd00000000000000d2fffffe16000000000000000069ffffff3e0000000000000002f4ffff7e00000038ffffffff74000000001df6ffffffeb0f0000000000000000003bffffffffbd0000000000e4ffffffc8000001fcffc00000000000d6ffffff84000000000000000000000000000000000000000000000000c8ffe8000000000000000000000011f7fffffff914000000000000000090ffffffff84000000000000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a0000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000000000000000000000000015f9fffffffa1600000000000000000000000095ffffffff890000000000000000000000000000000000000011f7fffffff914000000000000000090ffffffff840000000000000000000000000000000000000011f7fffffff914000000000000000090ffffffff8400000000000000000000000000000000000095fffffc2e00000000000000000000000007b3ffffcb110000000000000000000000000000004bfccb1f00b0ffffe0000000000000000000000000000023f7ffffa5000000000000000000000000000000000000000000000000000000001beeffffffff3b0000000000000000000000000000acffffffffa4000000000000000000000047e1ffffffffffa0000000000000000097ffffffff4800000000000000000000000000000000000000000000acffffffffa40000000000000000000000000088ffffffffff7b000000007dffffffffe0120000000000000000000002d0ffffffff29000000000000000000000000000000000000000000000000000042ffffffffc500000000000000000092ffffff890000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009dfffffc000000000000008cffffff60000000000000000024ffffff810000000000000000c4ffffbc00000038ffffffff7400000000a3ffffffff690000000000000000000000adffffffff4900000000e4ffffffc8000000deffe50000000000bdffffffb0000000000000000000000000000000000000000000000001f0ffc8000000000000000000000000a2ffffffff730000000000000008edfffffffd1f000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd70000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff2800000000000000000000000000000000000000a7ffffffff7600000000000000000000000af0fffffffe230000000000000000000000000000000000000000a2ffffffff730000000000000008edfffffffd1f0000000000000000000000000000000000000000a2ffffffff730000000000000008edfffffffd1f00000000000000000000000000000000000010e9ffffc30100000000000000000000000005aeffffcf14000000000000000000000000000ae8ffffea3fabffffe000000000000000000000000000000081ffffff400000000000000000000000000000000000000000000000000000000064ffffffffce0100000000000000000000000000acffffffffa400000000000000000000000011cefffffffffe390000000000000072ffffffff6900000000000000000000000000000000000000000000acffffffffa400000000000000000000000a97ffffffffffe409000000000be4ffffffffd42200000000000000000497ffffffffc80000000000000000000000000000000000000000000000000000000092ffffffff40000000000000000065fffffffffffffffffffffffffffffffff2c02b0000000038ffffffffffd3cccccccccccccccccccccccccccc5f00000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008effffff070000000000003effffffcd000000000000000000dfffffc700000000000000009fffffdb00000038ffffffff7400000033feffffffd403000000000000000000000024faffffffd202000000e4ffffffc8000000aaffff1a0000000081ffffffee040000000000000000000000000000000000000000000026ffff920000000000000000000000003bffffffffd8000000000000005bffffffffb600000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf000000000000000000000000000000000000000040ffffffffdb010000000000000000000060ffffffffbb0000000000000000000000000000000000000000003bffffffffd8000000000000005bffffffffb60000000000000000000000000000000000000000003bffffffffd8000000000000005bffffffffb6000000000000000000000000000000000000000061ffffff5f0000000000000000000000000004a9ffffd316000000000000000000000000005ff9fffffbdeffffe000000000000000000000000000000008ddffffd40500000000000000000000000000000000000000000000000000000003d6ffffffff4800000000000000000000000000acffffffffa40000000000000000000000000019efffffffffbd0000000000000026ffffffffba00000000000000000000000000000000000000000000acffffffffa40000000000000000073783e8fffffffffff63d00000000000036f6fffffffff69034020000000f57cdfffffffffe3b00000000000000a9feffffffffffffffffffffffffffffffffffffffffffffffffa2000000000000000039ffffffffffffffffffffffffffffffffffffc00000000038ffffffffff24000000000000000000000000000000000000000000000099ccccccccccccccccccccfdfffff9cccccccccccccccccccc850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007dffffff2000000000000000c8ffffff5700000000000000009bfffffc100000000000000090ffffee00000038ffffffff74000000c0ffffffff470000000000000000000000000090ffffffff62000000e4ffffffc800000072ffff5c0000000037ffffffff5a000000000000000000000000000000000000000000006bffff5900000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e00000000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f0000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff58000000000000000000000000000000000000000000d7ffffffff4200000000000000000000c6ffffffff5300000000000000000000000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e00000000000000000000000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e000000000000000000000000000000000000000001c4ffffe9100000000000000000000000000003a7ffffd618000000000000000000000000003feeffffffffffe0000000000000000000000000000000004cffffff74000000000000000000000000000000000000000000000000000000006bffffffffb100000000000000000000000000acffffffffa4000000000000000000000000000078fffffffffc1400000000000000c8ffffffff4b0000000000000000000000003bb770000000000000acffffffffedccccccccccccd5e5fafffffffffffffff64b00000000000000004ff6fffffffffffff4ddd1e0fdffffffffffff720000000000000000f7ffffffffffffffffffffffffffffffffffffffffffffffffffca00000000000000000dfeffffffffffffffffffffffffffffffffffe30000000038ffffffffff240000000000000000000000000000000000000000000000bfffffffffffffffffffffffffffffffffffffffffffffffffa70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005dffffff440000000000000044ffffffef210000000000000056ffffff510000000000000087fffffe00000038ffffffff74000050ffffffffb5000000000000000000000000000012eeffffffe4090000e4ffffffc800000020feffb40000000002d7ffffffd80a000000000000000000000000000000000000000000c4fff80f000000000000000000000000006cffffffffa4000000000027ffffffffe30300000000000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c000000000000000076ffffffffab000000000000000000000000002fffffffffea0600000000000000000000000000000000000000000071ffffffffa70000000000000000002bffffffffe704000000000000000000000000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000000000000000000000006cffffffffa4000000000027ffffffffe3030000000000000000000000000000000000000000002ffcffff93000000000000000000000000000005b6ffffd50f0000000000000000000000000026dcffffffffe00000000000000000000000000000000000b3fffff31b00000000000000000000000000000000000000000000000000000014fefffffff305000000000000000000000000acffffffffa400000000000000000000000000001afeffffffff5d000000000000003ffffffffff247000000000000000000108ffdffff380000000000acffffffffffffffffffffffffffffffffffffffffc727000000000000000000002dd7fffffffffffffffffffffffffffff86b000000000000000000f8ffffffffffffffffffffffffffffffffffffffffffffffffffd0000000000000000000dfffffffffffffffffffffffffffffffffffe40000000038ffffffffff2400000000000000000000000000000000000000000000009bffffffffffffffffffffffffffffffffffffffffffffffff840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002affffff7a000000000000000096ffffffde2500000000000013feffff960000000000000092fffff400000038ffffffff740005d9fffffffb2900000000000000000000000000000073ffffffff7a0000e4ffffffc800000000c4fffb230000000057ffffffffa3020000000000000000000000000000000000000029feffac00000000000000000000000000000ff5fffffff712000000008cffffffff7f000000000000000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff58000000000000000015f9fffffffa1600000000000000000000000095ffffffff890000000000000000000000000000000000000000000011f7fffffff914000000000000000090ffffffff8400000000000000000000000000000000000000000000000ff5fffffff712000000008cffffffff7f00000000000000000000000000000000000000000000000ff5fffffff712000000008cffffffff7f000000000000000000000000000000000000000000000092fffffc3100000000000000000000000000000ddcffffb9030000000000000000000000000014c4ffffffe000000000000000000000000000000000001fefffffa800000000000000000000000000000000000000000000000000000000d7ffffffff32000000000000000000000000acffffffffa4000000000000000000000000000000d8ffffffff7f000000000000000097fffffffffeaa420800000003338cefffffffffbe0000000000acfffffffffffffffffffffffffffffffffffebc55030000000000000000000000000868dcfffffffffffffffffffffeaf2d00000000000000000000f8ffffffffffffffffffffffffffffffffffffffffffffffffffd0000000000000000000000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000001cc1f7f0dec1a17d593a1efaffffe724456687a8cae7f5f6b81300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f4ffffbc000000000000000005c3ffffffec60010000000000cdffffdb00000000000000a7ffffe300000038ffffffff74006dffffffff930000000000000000000000000000000006ddfffffff11500e4ffffffc80000000057ffffa70000000001c2ffffffffb319000000000000000032c9da1a000000000000a7ffff400000000000000000000000000000009dffffffff6f00000006ebfffffffc1c0000000000000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff61000000000000000000a7ffffffff7600000000000000000000000af0fffffffe230000000000000000000000000000000000000000000000a2ffffffff730000000000000008edfffffffd1f0000000000000000000000000000000000000000000000009dffffffff6f00000006ebfffffffc1c0000000000000000000000000000000000000000000000009dffffffff6f00000006ebfffffffc1c00000000000000000000000000000000000000000000000fe8ffffc70100000000000000000000000000003affffff61000000000000000000000000000007a6ffffe000000000000000000000000000000000000037cefcff43000000000000000000000000000000000000000000000000000000b9ffffffff49000000000000000000000000acffffffffa4000000000000000000000000000000beffffffff98000000000000000004b6fffffffffffff9dfd0dcf4ffffffffffffffec1700000000acfffffffffffffffffffffff7e8d8c3915c200000000000000000000000000000000000033c7dbbd8ecfbecd9b47126000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000008fffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aefffffc1700000000000000000bb0ffffffffd0732e120829bcffffff20000000000000cbffffcb00000038ffffffff7310ecffffffef13000000000000000000000000000000000056ffffffff9300e4ffffffc80000000001d2fffe320000000017e3fffffffff5954a1d070a225ab3feffffb9010000000035fdffbd0000000000000000000000000000000036ffffffffd400000057ffffffffb100000000000000000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff5800000000000000000040ffffffffdb010000000000000000000060ffffffffbb0000000000000000000000000000000000000000000000003bffffffffd8000000000000005bffffffffb60000000000000000000000000000000000000000000000000036ffffffffd400000057ffffffffb10000000000000000000000000000000000000000000000000036ffffffffd400000057ffffffffb1000000000000000000000000000000000000000000000000005effffff62000000000000000000000000000000baffffe20200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028aad3f4d92a0000000000000000000000000000adffffffff55000000000000000000000000acffffffffa4000000000000000000000000000000b9ffffffff9e000000000000000000048bffffffffffffffffffffffffffffffffb2180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000016fffffffe01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056ffffff79000000000000000000027ff6ffffffffffffffffffffffff65000000000009f9ffff9700000038ffffffff6e8bffffffff7100000000000000000000000000000000000000c6fffffffa24e0ffffffc8000000000047ffffc907000000002de0ffffffffffffffffffffffffffffffe11800000007d5fffb330000000000000000000000000000000000ceffffffff3a0000bcffffffff49000000000000000000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b00000000000000000000d7ffffffff4200000000000000000000c6ffffffff5300000000000000000000000000000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e0000000000000000000000000000000000000000000000000000ceffffffff3a0000bcffffffff490000000000000000000000000000000000000000000000000000ceffffffff3a0000bcffffffff490000000000000000000000000000000000000000000000000000c2ffffeb11000000000000000000000000000067ffffff2f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019ffffffffa60000000000000000000000000000c0ffffffff3f000000000000000000000000acffffffffa4000000000000000000000000000000ceffffffff8800000000000000000000003abafffffffffffffffffffffffbaa3c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000023ffffffff0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009efffffe909000000000000000000001da0fbffffffffffffffffffffa800000000004affffff6000000038ffffffff82f8ffffffda050000000000000000000000000000000000000039ffffffffabd6ffffffc800000000000097ffff9f000000000015bbffffffffffffffffffffffffffc117000000009dffff7e00000000000000000000000000000000000067ffffffff9d0021feffffffe002000000000000000000000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d0000000000000000000071ffffffffa70000000000000000002bffffffffe704000000000000000000000000000000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000000000000000000000000000000067ffffffff9d0021feffffffe002000000000000000000000000000000000000000000000000000067ffffffff9d0021feffffffe00200000000000000000000000000000000000000000000000000002dfbffff970000000003b9e4f05500000000005dffffff460000000000000000000019649ecfe3f3fae9d6ac6f2900000000000000000000033b697a6e541600000000000000000000ddfffffff20a00000000000000000000000003eeffffffff24000000000000000000000000acffffffffa400000000000000000000000000000bf8ffffffff6e000000000000000000000000002a72b5d6ebfbeddac5915416000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000368acce7fbf2d4a050030000000060f8ffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000031ffffffff1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081ffffff800000000000000000000000001667a7d1eefaf9edcfa15f0f0000000000a9fffffb1700000038ffffffffebffffffff4f000000000000000000000000000000000000000000aafffffffff1ffffffc80000000000000acfffff7100000000000049cbffffffffffffffffffda5700000000007effffbd030000000000000000000000000000000000000cf2ffffffee057effffffff7b00000000000000000000000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c0000000000000000000011f7fffffff914000000000000000090ffffffff8400000000000000000000000000000000000000000000000000000ff5fffffff712000000008cffffffff7f0000000000000000000000000000000000000000000000000000000cf2ffffffee057effffffff7b0000000000000000000000000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000000000000000000000000000008ffffffd3300000000cfffffe60c0000000099ffffff30000000000000000027a5faffffffffffffffffffffffbe4a000000000000000080fffffffffffeb830000000000000000081ffffffff770000000000000000000000004affffffffe000000000000000000000000000acffffffffa4000000000000000000000000000056ffffffffff2d00000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000001fb2ffffffffffffffffffdc44000000c1ffffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c0000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000003effffffff2600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011f1fffff72b00000000000000000000000000000000000000000000000000000031fdffffb40000000038ffffffffffffffffbd0000000000000000000000000000000000000000000022f9ffffffffffffffc80000000000000017dcffff7600000000000000216b9bb2c5b6a07c2f0000000000018bffffcd0d000000000000000000000000000000000000000098ffffffff46d2fffffffb1800000000000000000000000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd3000000000000000000000000a2ffffffff730000000000000008edfffffffd1f0000000000000000000000000000000000000000000000000000009dffffffff6f00000006ebfffffffc1c0000000000000000000000000000000000000000000000000000000098ffffffff46d2fffffffb180000000000000000000000000000000000000000000000000000000098ffffffff46d2fffffffb18000000000000000000000000000000000000000000000000000000000ee6ffffc9020000006dffffffbe2200046afdffffe702000000000000006ff6ffffffffffffffffffffffffffffffa9130000000000006cfffffffffffffff8530000000000000018f9fffffff7330000000000000000000009d2ffffffff8c00000000000000000000000000acffffffffa40000000000000000000000000006d7ffffffffe00000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff1000000000000032eefffffffffffffffffffffffe960700e2ffffff88000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000004cffffffff330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071ffffffd50c0000000000000000000000000000000000000000000000000000c0ffffff4b0000000038fffffffffffffffd2f00000000000000000000000000000000000000000000008dffffffffffffffc8000000000000000020d7ffffa50d00000000000000000000000000000000000016b1ffffc91500000000000000000000000000000000000000000030ffffffffb1ffffffffac0000000000000000000000000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff950000000000000000000000003bffffffffd8000000000000005bffffffffb60000000000000000000000000000000000000000000000000000000036ffffffffd400000057ffffffffb1000000000000000000000000000000000000000000000000000000000030ffffffffb1ffffffffac000000000000000000000000000000000000000000000000000000000030ffffffffb1ffffffffac0000000000000000000000000000000000000000000000000000000000005bffffff6600000005ccffffffffecf9ffffffff640000000000000088fffffffffffffff1dbd2e7fdffffffffffffdf1d000000000053fffffffffffffffff72c0000000000000081ffffffffef4500000000000000000eb5fffffffff21900000000000000000000000000acffffffffa400000000000000000000000002a6ffffffffff6f000000000000000000000000000000f3ffc30600000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000027eefffffffffffff4dad0e6ffffffffb60dfcffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000005affffffff400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c6ffffffbb060000000000000000000000000000000000000000000000006bffffffc1000000000038ffffffffffffff9b00000000000000000000000000000000000000000000000011edffffffffffffc800000000000000000010bdffffe4570100000000000000000000000000000463ebffffab090000000000000000000000000000000000000000000000c9ffffffffffffffff4400000000000000000000000000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff4300000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e0000000000000000000000000000000000000000000000000000000000ceffffffff3a0000bcffffffff49000000000000000000000000000000000000000000000000000000000000c9ffffffffffffffff44000000000000000000000000000000000000000000000000000000000000c9ffffffffffffffff4400000000000000000000000000000000000000000000000000000000000000c0ffffed1300000013befffffffffffffffd7e000000000000006afffffffffff68c30000000001159caffffffffffdb160000000008464c5c96f6ffffffffb00000000000000004c8ffffffffffab4206000000186ce1ffffffffff700000000000000000000000000000acffffffffa4000000000000000000000022bfffffffffffd905000000000000000000000000000000e2ffff3600000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000001c1ffffffffffb83e030000001b72e7ffffccffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000067ffffffff4d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026efffffffbb0c0000000000000000000000000000000000000000000057fdfffffa32000000000038fffffffffffff2170000000000000000000000000000000000000000000000000070ffffffffffffc8000000000000000000000375f7ffffd2620e00000000000000000000196fdefffff0640000000000000000000000000000000000000000000000000062ffffffffffffffdc0100000000000000000000000000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe403000000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000000000000000000000000000000000000067ffffffff9d0021feffffffe00200000000000000000000000000000000000000000000000000000000000062ffffffffffffffdc0100000000000000000000000000000000000000000000000000000000000062ffffffffffffffdc01000000000000000000000000000000000000bcffffffffffffffffffff74002bfbffff9a00000000004daae0f7f5d8972e0000000000000024f5ffffffffcc2100000000000000000067f9ffffffffa80000000000000000003bfcfffffffd120000000000000012ccfffffffffffff6dbd2e5ffffffffffffff96000000000000000000000000000000acffffffffa400000000000008183468b3fdffffffffffec2b00000000000000000000000000000000d0ffff4900000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000059ffffffffff7e000000000000000014b4ffffffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000075ffffffff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042faffffffd52b000000000000000000000000000000000000000064faffffff7300000000000038ffffffffffff79000000000000000000000000000000000000000000000000000005dbffffffffffc800000000000000000000000026a9fdfffff6bb7e573a2d32425b8fc6fdfffffa9c1b00000000000000000000000000000000000000000000000000000af0ffffffffffff760000000000000000000000000000000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff7600000000000000000000000000000ff5fffffff712000000008cffffffff7f0000000000000000000000000000000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000000000000000000000000000000000000af0ffffffffffff76000000000000000000000000000000000000000000000000000000000000000af0ffffffffffff7600000000000000000000000000000000000000bcffffffffffffffffffff7400008dfffffe3700000000000000000000000000000000000000aaffffffffd00e00000000000000000000004bfdffffffff45000000000000000000b6ffffffff4800000000000000000fa5fffffffffffffffffffffffffffffc8102000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffe6340000000000000000000000000000000000bfffff5b00000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000c2ffffffffab000000000000000000000197ffffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000000000000000000000083ffffffff66000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cfbfffffff781090000000000000000000000000000000017b2ffffffffa50100000000000038ffffffffffdf0800000000000000000000000000000000000000000000000000000053ffffffffffc800000000000000000000000000002995e9ffffffffffffffffffffffffe18c1f000000000000000000000000000000000000000000000000000000000093fffffffffff915000000000000000000000000000000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d0000000000000000000000000000009dffffffff6f00000006ebfffffffc1c0000000000000000000000000000000000000000000000000000000000000098ffffffff46d2fffffffb18000000000000000000000000000000000000000000000000000000000000000093fffffffffff915000000000000000000000000000000000000000000000000000000000000000093fffffffffff915000000000000000000000000000000000000003a505050c9ffffea5050502400000de5ffffcc02000000000000000000000000000000000028fdfffffff828000000000000000000000000008affffffffb900000000000000000081ffffffff64000000000000000000004ac5fffffffffffffffffffffeb6360000000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffa111000000000000000000000000000000000000adffff6d00000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000024fffffffffd21000000000000000000000002abffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000090ffffffff7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bf5ffffffffe87817000000000000000000000000309bf5ffffffffa5030000000000000038ffffffffe9440000000000000000000000000000000000000000000000000000000000a0f9ffffffc800000000000000000000000000000000033f79add6e7f8f6e5d3a7743701000000000000000000000000000000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff610000000000000000000000000000000036ffffffffd400000057ffffffffb1000000000000000000000000000000000000000000000000000000000000000030ffffffffb1ffffffffac0000000000000000000000000000000000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000000000000000000000000000002cffffffffffa7000000000000000000000000000000000000000000000000b0ffffe00000000000000059ffffff6900000000000000000000000000000000008fffffffff91000000000000000000000000000011f6fffffffb0f000000000000000071ffffffff720000000000000000000000002e77b1dbedfbeddaaf722700000000000000000000000000000000000000acffffffffffffffffffffffffffffffffffec8e2900000000000000000000000000000000000000009fffff7e00000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000068ffffffffc0000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff1000000000000000000000000000004dcaf2f0c43d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d9fffffffffffcbc7b46210e03102335609bd6fffffffffffd81020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb0000000000000000000000000000000000000ceffffffff3a0000bcffffffff49000000000000000000000000000000000000000000000000000000000000000000c9ffffffffffffffff440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe00000000000000000bdffffee1500000000000000000000000000000000dafffffff617000000000000000000000000000000b3ffffffff40000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffffffedcccccccccccbc3b4a5905f2a020000000000000000000000000000000000000f6ab5e7fffffffef4dcb274200000000000000000000038ffffffffff24000000000000000000000000000000000000000000009affffffff76000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a92fdffffffffffffffffffffffffffffffffffffffffdb43000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029a3e7fae1961e000000000000000000000000000000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd71200000000000000000000000000000000000067ffffffff9d0021feffffffe00200000000000000000000000000000000000000000000000000000000000000000062ffffffffffffffdc010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe0000000000000000029faffff9e000000000000000000000000000000000b69bfd3600000000000000000000000000000000088ffffffff5f000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffffffa400000000000000000000000000000000000000000000000000000000000c8ff6fffffffffffffffffffffffeb22d000000000000000038ffffffffff2400000000000000000000000000000000000000000000caffffffff4b000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029aafeffffffffffffffffffffffffffffffffe774060000000000000000000000000000000000000000000000000004437db0d7e9f8f7e7d4aa783b0100000000000000000000000000000000000000001574b6e3f6faebca9b550a000000000000000000001e76b9e5f8f5dfc8954e0d000000000000000000000000000000000000000000004df7fffffffffff03d000000000000000000000000000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe020000000000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000000000000000000000000000000000000000000af0ffffffffffff76000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe00000000000000000008afffffe3a00000000000000000000000000000000000000000000000000000000000000000000000080ffffffff67000000000000000070ffffffff740000000000000000000001245065727c705f481400000000000000000000000000000000000000000000acffffffffa4000000000000000000000000000000000000000000000000000000003ee2fffffffffffffffffffffffffffffffa740000000000000038ffffffffff2400000000000000000000000000000000000000000000e1ffffffff28000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002581dcfffffffffffffffffffffff5b55805000000000000000000000000000000000000000000000000002a97ebffffffffffffffffffffffffe48d1f000000000000000000000000000000000278f8ffffffffffffffffffed8108000000000000139dfbfffffffffffffffffff89f23000000000000000000000000000000000000001bf4ffc8360f40d9ffeb100000000000000000000000000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b00000000000000000000000000000000000000000098ffffffff46d2fffffffb18000000000000000000000000000000000000000000000000000000000000000000000093fffffffffff915000000000000000000000000000000000000000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f000000000000000000000000000000000000000000003effff91000000001679cef8f2bb3f000000000000000000000000000000000000000000b0ffffe00000000000000000000be3ffffcf03000000000000000000000000000000000000000000000000000000000000000000000096ffffffff58000000000000000070ffffffff74000000000000000658adf3ffffffffffffffffffda8b2400000000000000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000000000004bf7fffffffffffffbfffff5d7f0ffffffffffff8c00000000000038ffffffffff2400000000000000000000000000000000000000000000f0ffffffff1b000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022588ca7b8c7bfb1986d4007000000000000000000000000000000000000000000000000000027abfefffff9ba85553f2f2e3b5983c0f9fffffa9d1b00000000000000000000000000009bffffffffffffffffffffffffffda290000000035e6fffffffffffffffffffffffffff87701000000000000000000000000000000000082fff4170000002bfdff6d000000000000000000000000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a0000000000000000000000000000000000000000000030ffffffffb1ffffffffac0000000000000000000000000000000000000000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000000000000000000000000db5ffffffe64800000067f4ffffff9203000000000000000000000000000000000000000000000017fffff04008359ff9fffffffffffc4f0000000000000000000000000000000000000000b0ffffe00000000000000000000056ffffff6d0000000000000000000000000000000000000000000000000000000000000000000000cdffffffff35000000000000000070ffffffff740000000000005ce0fffffffffffffffffffffffffffffeab1a0000000000000000000000000000000000acffffffffa4000000000000000000000000000000000000000000000000000034fafffffffffca53d46ffffd400012e8ef4ffffffe70e000000000038ffffffffff2400000000000000000000000000000000000000000000fdffffffff0f000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000035c7fbffffd2170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000376f7ffffcf6010000000000000000000001169e0fffff1660000000000000000000000005cfffffffffffff9d7d2e7ffffffffffef31000030f1fffffffffffbe2d0dbf4ffffffffffffa30200000000000000000000000000000000b4ffc20000000000dbffa0000000000000000000000000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e00000000000000000000000000000000000000000000000000c9ffffffffffffffff440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028effffffff9724b4fffffffb690000000000000000000000000000000000000000000000000000beffffffffffffffffffffffffffe70600000000000000000000000000000000000000b0ffffe00000000000000000000000bbfffff01700000000000000000000000000000000000000000000000000000000000000000030fffffffff104000000000000000070ffffffff74000000000299fffffffffffffffffffffffffffffffffffff15100000000000000000000000000000000acffffffffa4000000000000000000000000000000000000000000000000000ad9ffffffffe339000030ffffe60000000017a5fffa3d00000000000038ffffffffff2400000000000000000000000000000000000000000000f8ffffffff16000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000172faffffffcd1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011beffffde4e0000000000000000000000000000000771ecffffad0a00000000000000000000deffffffffe65d080000001d74e8ffffffe2150ddcffffffffd3570d000000033089effffffff92700000000000000000000000000000000b2ffc50000000000dfff9d00000000000000000000000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b04600000000000000000000000000000000000000000000000000000062ffffffffffffffdc010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066fbffffffffffffffef4400000000000000000000000000000000000000000000000000000028edfffffffffffffff5d6e3ffffff4100000000000000000000000000000000000000b0ffffe0000000000000000000000027f9ffffa100000000000000000000000000000000000000000000000000000000000000000bc9ffffffff9100000000000000000070ffffffff740000000083fffffffffffdc78d69574e556488bbf8fffffffffc5d000000000000000000000000000000acffffffffa4000000000000000000000000000000000000000000000000007cffffffffe9210000001efffff8000000000000382d0000000000000038ffffffffff2400000000000000000000000000000000000000000000e7ffffffff23000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000014b4ffffffffc60f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1ffffffd50e00000000000000000000000005cdffffffe7020000000000000000000000000000000022d9ffff980b00000000000000000000000000000000000012baffffcb1700000000000000002dfffffffff0210000000000000015c2ffffff9788ffffffff90030000000000000000119effff6b00000000000000000000000000000000007cfff71e00000034feff680000000000000000000000000000000000000000000000000000000000155792bcddf0faf9eedab88b500f00000000000000000000000000000000000000000000000000000000000af0ffffffffffff7600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042eeffffffffffdb28000000000000000000000000000000000000000000000000000000000022a3e9f8e1b97a370300007fffff6600000000000000000000000000000000000000b0ffffe000000000000000000000000087ffffff3d0000000000000000000000000000000000000000000000000000000000002cc9ffffffffec1800000000000000000070ffffffff740000001dfcffffffff981d0000000000000000000e75f2fffffff82d0000000000000000000000000000acffffffffa400000000000000000000000000000000000000000000000007e9ffffffff4a000000000cffffff0a000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000d3ffffffff3e000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000000000000000000003fe4ffffffffbf0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016fdffffffff690000000000000000000000004dffffffffff3b00000000000000000000000000000018defffc6b000000000000000000000000000000000000000000038fffffcf0e000000000000005bffffffff8900000000000000000010dbfffffbf7ffffff9c000000000000000000000000404f00000000000000000000000000000000000017f1ffd64a2455e3ffe70d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093fffffffffff91500000000000000000000000000000000000000000000000000000000000000002bbff3ca410000000000000059d7f1af1c00000000000000000000000000000000000000000000000000000000000025808080807c1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000b0ffffe00000000000000000000000000ae1ffffd2040000000000000000000000000000000000000000000000000001215db6fcfffffffff8470000000000000000000070ffffffff7400000074ffffffff6b0000000000000000000000000025e6ffffffc400000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bffffffffba000000000000faffff1c000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000a5ffffffff6e000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000000000000027ffcffffffffb809000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066ffffffffffbe000000000000000000000000a2ffffffffff8d00000000000000000000000000000bd0fffe5c0000002b8c8c8c890000000000000000001c7e8c8c8c52007bffffbf040000000000006fffffffff4e000000000000000000004fffffffffffffe20c00000000000000000000000000000000000000000000000000000000000000000049f5ffffffffffee3900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002cffffffffffa7000000000000000000000000000000000000000000000000000000000000000010e5fffffff729000000000044ffffffffd20500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfccb1f00b0ffffe00000000000000000000000000053ffffff700000000000000000000000000000000000000000000073d2e1f7ffffffffffffffe844000000000000000000000070ffffffff7400000097ffffffdb0000000000000000000000000000004fffffffff2d000000000000000000000000000000000000000000000000000000000000000000000000000000000000009effffffff58000000000000e9ffff2e000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff78000000000000006bffffffffab000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000000000000001abfffffffffffaf07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9fffffffffffd170000000000000000000006efffffffffffdf000000000000000000000000000099ffff7b0000000050fffffffc00000000000000000adaffffffef1d0000a4ffff8000000000000062ffffffff440000000000000000000000ddffffffffff700000000000000000000000000000000000000000000000000000000000000000000000279fe5f9df931c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056ffffffffff820000000000a0ffffffffff3a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cffffff2c0000000000003cffffcc000000000000000000000000b4ffff54000000000ae8ffffea3fabffffe00000000000000000000000000000b8fffff11900000000000000000000000000000000000000000090fffffffffffffffff48e1400000000000000000000000070ffffffff740000008cffffffb600000000000000000000000000000004fbffffff6f00000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000000000000ddfffffffe0e000000000000d7ffff40000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000029fffffffff80f0000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000038ffffffffffd3cccccccccccccccccccccccccccc5f0000000000000000000000036a808080807c530200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010faffffffffffff69000000000000000000004bffffffffffffff3200000000000000000000000049ffffbc010000000050fffffffc000000000000000094ffffffff5a00000008cbfffc35000000000037ffffffff72000000000000000000000097fffffffffa0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024e2fffff7b825000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052ffffffffff7d00000000009cffffffffff350000000000000000000000000020b4f6e98306000000000000000013a1f2f0970e0000000000000000088becf5ac1c0000000000000000000000004cffffff2c0000000000003cffffcc000000000000000000000000b4ffff5400000000005ff9fffffbdeffffe0000000000000000000000000000025f8ffffa500000000000000000000000000000000000000000090fffffffffffff8780e000000000000000000000000000070ffffffff740000004bffffffdf00000000000000000000000000000005faffffff8d00000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000000000006ffffffffdb00000000000000c5ffff52000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000000c3ffffffff8400000000000000000000000063ffffffff88000000000038ffffffffffd3cccccccccccccccccccccccccccc5f00000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005effffffd3feffffbf000000000000000000009fffffffd5ffffff85000000000000000000000002d5fff41e000000000050fffffffc0000000000000042feffffffa7000000000035feffbf000000000000d5ffffffe1110000000000000000000071ffffffffc6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020ddfffffff35c0000000000000000000000000000000000000000000000000000000000000000000005e7ffffffff4c00000000000000000000000000000000000000000000000000000000000000000de1fffffff52400000000003dfeffffffcb030000000000000000000000000de1ffffffff9a0000000000000002c8ffffffffbc0000000000000000a3ffffffffdc0a00000000000000000000004cffffff2c0000000000003cffffcc000000002ad9e04200000000b4ffff540000000000003feeffffffffffe000000000000000000000000000000085ffffff40000000000000000000000000000000000000000090fffffffffffffffeb6350000000000000000000000000070ffffffff7400000001c5ffffff68000000000000000000000000000078ffffffff8100000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000000000019ffffffffbd00000000000000b3ffff64000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccc5f000000000000000057fffffffff9320000000000000000000017e1ffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffff91cefffffd17000000000000000005eefffffd69ffffffd700000000000000000000005bffff8a00000000000050fffffffc0000000000000ee1ffffffe311000000000000a9ffff43000000000055ffffffffcb220000000000000000005dffffffff8c000000000000000000000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000000000000000000000000000000001bd9ffffffff9f0b000000000000000000000000000000000000000000000000000000000000000056ffffffffffb500000000000000000000000000000000000000000000000000000000000000000026baf1c63b0000000000000053d3efab180000000000000000000000000065fffffffffffe1d00000000000041ffffffffffff400000000000001affffffffffff6800000000000000000000004cffffff2c0000000000003cffffcc00000000c3ffffde07000000b4ffff540000000000000026dcffffffffe000000000000000000000000000000009e0ffffd50500000000000000000000000000000000000000010e1d4477ccfffffffffd8401000000000000000000000070ffffffff740000000015c3fffffc6f010000000000000000001752b2ffffffffff5700000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000000000000000000002bffffffffaf00000000000000a2ffff76000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000001c3ffffffffec37000000000000000021d4ffffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bf7ffffff5e87ffffff69000000000000000048ffffffc822ffffffff2900000000000000000000c7fff71500000000000050fffffffc0000000000009dfffffffe440000000000000022fcffaf0000000000008afffffffff58d250000000000000058ffffffff6d00000000000000000000000000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff980000000000000000000000000000000000000000000017d3ffffffffd72e00000000000000000000000000000000000000000000000000000000000000c0fffffffffffd21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffffffffff3d00000000000064ffffffffffff610000000000003cffffffffffff8900000000000000000000004cffffff2c0000000000003cffffcc00000056ffffffff75000000b4ffff54000000000000000014c4ffffffe00000000000000000000000000000000048feffff740000000000000000000000000000000000000000000000000039d0ffffffff90000000000000000000000070ffffffff7400000000000680efffffcb80adc4ccccccd5e3f3ffffffffffffffe70700000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000002affffffffae0000000000000090ffff88000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000025f6fffffffffd9837010000002b86f3ffffffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055ffffffff283affffffbf00000000000000009cffffff8000e1ffffff7c00000000000000000023ffffab0000000000000050fffffffc00000000004bffffffff90000000000000000000b4fff91000000000000070f9ffffffffffd897674423160c5affffffff54000000000000000000000000000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff31000000000000000000000000000000000000000000000013cefffffffff76a000000000000000000000000000000000000000000000000000000000029ffffffffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064fffffffffffe1b00000000000040ffffffffffff3d00000000000018ffffffffffff6500000000000000000000004cffffff2c0000000000003cffffcc000007dffffffbfff0140000b4ffff5400000000000000000007a6ffffe000000000000000000000000000000000005bdefef31b0000000000000000000000000000000000000000000000000009bcffffffff4c0000000000000000000070ffffffff74000000000000003ff6fffffffffffffffffffffffffffffffffff83d0000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000016ffffffffbe000000000000007effff9a000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000046f6fffffffffffff3dbd6f1fffffffff4ffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7ffffffe40002e7fffffd1700000000000004ecffffff320099ffffffce00000000000000000075ffff530000000000000050fffffffc0000000012e6ffffffd5080000000000000000005bffff5c0000000000000028aefdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb680000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc90000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000000000000000000000000000000000000093ffffffffffffffeb0700000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff7400000bdeffffffff950000000000000001c3ffffffffb600000000000000009dffffffffd90800000000000000000000004cffffff2c0000000000003cffffcc000079ffffc9acffff930000b4ffff54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017f1ffffffce0000000000000000000070ffffffff740000000000004ffaffffffffffffffffffffffffffffffffffc62d000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000003fdffffffd9000000000000006cffffac000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000043ebffffffffffffffffffffffffbb68ffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f2ffffff9a000096ffffff6a00000000000045ffffffe000004cffffffff210000000000000000acffff150000000000000050fffffffc00000000a7fffffffa300000000000000000000019ffff940000000000000000002482d4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa200000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff620000000000000000000000000000000000000000000000000000065c7d808080805f00000000000000000000000000000000000000000000000000000bf1ffffffffffffffff5b00000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff740000001caff6e77d0400000000000000000f9cf1ee920b00000000000000000685eaf4a8180000000000000000000000004cffffff2c0000000000003cffffcc0017f2ffff5234fefffb2700b4ffff5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099ffffffff2900000000000000000070ffffffff74000000000009e9fffffffffffffffffffffffffcf1dbb77f340000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000d0fffffffe0e0000000000005affffbe000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000139ffefffffffffffffffff579055cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cffffffff4e000043ffffffbf0000000000009affffff90000009f5ffffff730000000000000000e0ffe2000000000000000050fffffffc00000773ffffffff78000000000000000000000000e7ffca0000000000000000000000001c5486aac9ddedf4fbfffffffffdfcfcfcfcfcfcfcfcfcfcfcfcfcfeffffff9a0000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066ffffffffb8ffffffffc400000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cffffff2c0000000000003cffffcc009cffffc10000a3ffffb100b4ffff54000000000000000000000e5197cbe1f6f5e0c9964f0d00000000000000000000001445000000000000000000000000000000000000000000000000000000005affffffff6300000000000000000070ffffffff74000000000038fffffffff39048210b020000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000008effffffff5100000000000049ffffd0000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000237dbee6f8f4ddbb6d1800005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009ffffffff80b000003ecfffffd180000000003eaffffff3f000000b2ffffffc60000000000000001fdffbf000000000000000050ffffffffffffffffffffffa902000000000000000000000000c1ffe9000000000000000000000000000000000000000058ffffffff6e00000000000000000000000000baffffff87000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff9300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cfffffffff51e2ffffffff2e000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cffffff2c0000000000003cffffcb2ffdfffe3200001cf5ffff41b3ffff5400000000000000001083f1fffffffffffffffffffff38915000000000000000040edfd5a00000000000000006bb2dae881000000000000000000000000000043ffffffff7d00000000000000000070ffffffff74000000000041ffffffff3900000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000045ffffffffb700000000000037ffffe2000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ecffffffb7000000009dffffff6a0000000043ffffffeb0300000065fffffffe1a00000000000010ffffaf000000000000000050ffffffffffffffffffffffd17a110000000000000000000000b0fffa00000000000000000000000000000000000000005dffffffff9f00000000000000000000000000d1ffffff6f0000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c00000000000000000000003ffffdd74500000000000000000000000000000000000000005cffffa4000000000000000000000000000000000000000038fffffffff70d9dffffffff97000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff740000000000000000000000000000234c4c4c4000000000000000284c4c4c3b0000000000000000000000000000000000004cffffff2c0000000000003cffffb5beffff9f0000000082ffffce9fffff54000000000000003feafffffffffffffffffffffffffffff35c0000000000000057fffffc4a0000000000000096fffffffe25000000000000000000000000004effffffff8400000000000000000070ffffffff74000000000011f6fffff80100000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000001d3ffffffff44000000000025fffff4000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044ffffffff6c000000004affffffc00000000097ffffff9d0000000019feffffff6a0000000000001bffffa3000000000000000050ffffffffffffffffffffffffffee5100000000000000000000a8ffff070000000000000000000000000000000000000071ffffffffea0300000000000000000000000dfcffffff34000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc400000000000000000000000000a5fffff424000000000000000000000000000000000000005cffffa40000000000000000000000000000000000000000a2ffffffffaf0048fffffffff30d0000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000000000004cffffff2c0000000000003cffffe2fffff41a000000000be5ffffdbffff5400000000000062fbffffffffffffe8d4d7edffffffffffffff9501000000000000a4ffffe8130000000000005affffffff800000000000000000000000000074ffffffff6c00000000000000000070ffffffff7400000000000085ffffff5f00000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000005cffffffffe01c0000000013ffffff060000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096ffffffff210000000006f0fffffd18000002e8ffffff4c0000000000cbffffffbd0000000000000effffac000000000000000050fffffffc00000004133d8ff8fffffd54000000000000000000b6fff90000000000000000000000000000000000000000a3ffffffffff5c000000000000000000000064fffffff003000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d0000000000000000000000000018f1ffffb7000000000000000000000000000000000000005cffffa40000000000000000000000000000000000000013f7ffffffff530004e7ffffffff6a0000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000000000004cffffff2c0000000000003cffffffffff7d00000000000061ffffffffff5400000000003ffbffffffffdc651a00000000226fe1ffffffffff8800000000000013edffffa40000000000000ef2ffffffed10000000000000000000000000c7ffffffff4700000000000000000070ffffffff7400000000000003acfffff97874a6bdc7b9a36f3000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000001b6ffffffffdd2f00000003feffff180000004f9e3b0000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e6ffffffd5000000000000a4ffffff6b000040fffffff30800000000007efffffffc13000000000001fcffc0000000000000000050fffffffc0000000000000038f9ffffee130000000000000000c8ffe80000000000004b741c000000000000000000000ff2ffffffffffe3160000000000000000000ddeffffff95000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000000000000000000071ffffff510000000000000000000000000000000000005cffffa40000000000000000000000000000000000000075ffffffffe705000086ffffffffd30000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000033dcdcdcdce6ffffffe2dcdcdcdc1b003cffffffffe20900000000000002ceffffffff540000000011e9ffffffff92050000000000000000068dffffffffff5a00000000000082fffffe2800000000000092ffffffffad020000000000000000000051ffffffffee0600000000000000000070ffffffff7400000000000000026ef7ffffffffffffffffffffcd570000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000014e3fffffffffc96320000f0ffff2a0f62d0ffffed1d00000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003bffffffff8a00000000000050ffffffc0000095ffffffaa00000000000031ffffffff62000000000000deffe5000000000000000050fffffffc0000000000000000a0ffffff760000000000000001f0ffc8000000000060fffff67b070000000000000001a4fffffffeffffffcc1b0000000000000008b5fffffffc220000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000000000000000000004d1ffffe10a00000000000000000000000000000000005cffffa400000000000000000000000000000000000001dcffffffff8400000020fdffffffff3d00000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000000000003cffffffffffffffffffffffffff20003cffffffff5b00000000000000003fffffffff540000000083ffffffff8f00000000000000000000000074ffffffffe50a00000000002bffffff8500000000000017eaffffffffa90d00000000000000003ef2ffffffff8d0000000000000000000070ffffffff74000000000000000893ffffffffffffffffffffffffffb10d000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000023d9ffffffffffffe7bef6ffffddfbffffffffff9d00000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008dffffffff3e00000000000009f4fffffd1802e6ffffff5900000000000000e3ffffffb4000000000000aaffff1a0000000000000050fffffffc000000000000000064ffffffbc0000000000000026ffff920000000004e7ffffffffe378230000000032b6ffffffff52e7ffffffed7b210000000954d7ffffffff88000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff28000000000000000000000000000000003cffffff860000000000000000a9feffffffffffffffffffffffffff7e00000000000000000000000000000048fffffffffd1f00000000b7ffffffffa700000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000000000003cffffffffffffffffffffffffff20003cffffffb00100000000000000000097fcffff540000000ef1ffffffd60400000000000000000000000000afffffffff79000000000005fcffffc5000000000000004ffeffffffffe4721b00000003379cfdffffffffe50d0000000000000000000070ffffffff740000000000000acaffffffffffffffffffffffffffffffc40a0000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000013b6fffffffffffffffffffffffffffffffe9a0800000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dfffffffee0400000000000000aaffffff6a3dfffffff90f0000000000000097fffffff90e000000000072ffff5c0000000000000050fffffffc000000000000000059ffffffdc000000000000006bffff5900000000003cebffffffffffffecd7d3edffffffffffaa0039f9ffffffffffe9d4dcf7ffffffffffc50400000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf000000000000000000000000000000000000a2fffff9260000000000000afdffffffffffffffffffffffffffffa4000000000000000000000000000000b1ffffffffb5000000000050fffffffff916000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053ffffffff5f000000000000000000000000000027feffffffd3000000000000f8ffffe9000000000000000063fdffffffffffffe6d2d9f4fffffffffffff034000000000000000000000070ffffffff74000000000000abffffffffed83360f04134195f7ffffffff8d0000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000046d0fffffffffffffffffffffffeb935000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032ffffffffa7000000000000000057ffffffb487ffffffb800000000000000004affffffff59000000000020feffb40000000000000050fffffffc00000000000000007affffffdd00000000000000c4fff80f0000000000001abaffffffffffffffffffffffffffd11000003de4ffffffffffffffffffffffffbc0d0000000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff5800000000000000000000000000000000000017f0ffffba00000000000010ecffffaa7c7c7c7c7cabffffd07c7c4f00000000000000000000000000001efcffffffff4d000000000004e5ffffffff79000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097fffffffd11000000000000000000000000000000caffffffff230000000021fffffff20000000000000000004ee7ffffffffffffffffffffffffffffdc3500000000000000000000000070ffffffff74000000000052ffffffffca17000000000000002ae3fffffffc2000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000003884bde2f5feffffeaac731e0000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085ffffffff5c00000000000000000cf7fffff1c7ffffff67000000000000000008f4ffffffab000000000000c4fffb2300000000000050fffffffc0000000000000007d6ffffffc400000000000029feffac00000000000000000054d3ffffffffffffffffffffa90f0000000015acfefffffffffffffffff1780600000000000000000000000076ffffffffab000000000000000000000000002fffffffffea06000000000000000000000000000000000000006dffffff540000000000004bfeffdd0f000000005cffffa4000000000000000000000000000000000084ffffffffe20300000000000082ffffffffe0020000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc800000000000000000000000000000000043c83c1daeff9e6d1ab651d00000000000000000000002abc3200000000000000000000cfffffffd7000000000000000000000000000000008affffffff550000000073ffffffe000000000000000000000118defffffffffffffffffffffec840a0000000000000000000000000070ffffffff740000000000bcfffffff2190000000000000000003affffffff7800000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000000000000000000000000000000000000000000000000000090ffff850000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d7fffffffd13000000000000000000b1fffffffefffffd18000000000000000000b0fffffff409000000000057ffffa700000000000050fffffffc00000000000138bfffffffff83000000000000a7ffff4000000000000000000000003886bfe4f6fbedcb913500000000000000002a81bfe7f8f5dcb46614000000000000000000000000000015f9fffffffa1600000000000000000000000095ffffffff89000000000000000000000000000000000000000003cfffffe30b0000000000008dffffad000000005cffffa40000000000000000000000000000000005e8ffffffff7e000000000000001efdffffffff4c0000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000025edefffffffffffffffffffffeaa27000000000000000073faffca02000000000000000000e6ffffffc00000000000000000000000000000000071ffffffff6e00000008e4ffffffb2000000000000000000000000095794cae4f6f7e5cc9556080000000000000000000000000000000000000000000000000005f9ffffff990000000000000000000000c9ffffffb200000000000038ffffffffffffffffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000000007fffff960000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029ffffffffc5000000000000000000005effffffffffffc50000000000000000000063ffffffff50000000000001d2fffe32000000000050ffffffffccccccccd7f4fffffffffff51f000000000035fdffbd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7ffffffff7600000000000000000000000af0fffffffe2300000000000000000000000000000000000000000039feffff8900000000000005c9ffff700000005cffffa40000000000000000000000000000000057fffffffffb1b0000000000000000b4ffffffffb60000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000000000001bcafffffffffffffffffffffffffffffc7a00000000000000ebffffff69000000000000000000faffffffbc000000000000000000000000000000006effffffff8100000032ffffffff680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021ffffffff65000000000000000000000096ffffffcd00000000000038ffffffffffffffffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000000006fffffa7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffff790000000000000000000010faffffffffff740000000000000000000017feffffffa300000000000047ffffc9070000000050fffffffffffffffffffffffffffffe60000000000007d5fffb330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040ffffffffdb010000000000000000000060ffffffffbb00000000000000000000000000000000000000000000009ffffffa2900000000000021f0fffa3700005cffffa400000000000000000000000000000000c0ffffffffaf0000000000000000004dfffffffffd210000000000000000000000000000000000000000000000006afffffffffb0e0000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa003000000000099ffffffed0f0000000000000003ffffffffd60000000000000000000000000000000085ffffffff710000000058c7fff0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024ffffffff60000000000000000000000091ffffffc500000000000038ffffffffffd3cccccccccccccccccccccccccccc5f000000000000000000000000000000000000000000000000000000000000005effffb80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024e2fffff7b8250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ceffffffff2e0000000000000000000000b7ffffffffff230000000000000000000000c9ffffffef0500000000000097ffff9f0000000050ffffffffffffffffffffffffffe04d0000000000009dffff7e00000000000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000000000000000000d7ffffffff4200000000000000000000c6ffffffff53000000000000000000000000000000000000000000000015eeffffbd0000000000000053ffffe112005cffffa40000000000000000000000000000002affffffffff4700000000000000000003e2ffffffff8900000000000000000000000000000000000000000000000de5ffffffffff930000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000000014e3fffffffffc9839020000001059d0ffffffffff8600000000001bf6ffffff810000000000000000f1fffffffe16000000000000000000000000000000bdffffffff5a0000000000002e4b00000000000000000000002f71abd4e7f8f6e4d1a268230000000000000000000000000000000000000000000000000000000bffffffff860000000000000000000000b8ffffffa700000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004effffc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f00000000000000000000000000000000000020ddfffffff35c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021ffffffffe200000000000000000000000064ffffffffd20000000000000000000000007cffffffff480000000000000acfffff7100000050fffffffffffffffff4e7c6984c050000000000007effffbd03000000000000000000000000000000000358befdfffffffffffffffffffffffffab44c0100000000000000000000000000000000000000000071ffffffffa70000000000000000002bffffffffe7040000000000000000000000000000000000000000000000006affffff570000000000000096ffffb4015cffffa400000000000000000000000000000093ffffffffde01000000000000000000007fffffffffeb070000000000000000000000000000000000000000000091fffffffffffffd3300000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000b8ffffffffe93500000000000000000387fffffffffe47000000000089fffffff11300000000000000c8ffffffff72000000000000000000000000000016f9ffffffff2d00000000000000000000000000000000025dcafffffffffffffffffffffffeb9480000000000000000000000000000000000000000000000000000daffffffdf060000000000000000001ef8ffffff6100000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023fdffda0000000000000000000000000000000000002bbff3ca410000000000000059d7f1af1c0000000000000000000037f9ffffffef9f0e0000000000000000000000000000000000000000000000000db5ffffffe64800000067f4ffffff920300000000000000000000000000000000000000001bd9ffffffff9f0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073fffffff2560000000000000000000000000acafffff24e00000000000000000000000012d4ffffff9a0000000000000017dcffff76000000000000000000000000000000000000000000018bffffcd0d0000000000000000000000000000000055deffffffffffffffffffffffffffffffffffffd447000000000000000000000000000000000000000011f7fffffff914000000000000000090ffffffff840000000000000000000000000000000000000000000000000002ccffffe50d00000000000007cfffff7758ffffa400000000000000000000000000000bf1ffffffff7800000000000000000000001bfcffffffff5b00000000000000000000000000000000000000000031fcffffffffffffffcb02000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000004bfffffffff52b000000000000000000000094ffffffffd4010000000016f7ffffff82000000000000008dffffffffeb13000000000000000000000000008effffffffdf0000000000000000000000000000000025c3ffffffffffffffffffffffffffffffffa813000000000000000000000000000a93eff29f12000000000083ffffffff9801000000000000000ac3fffffffc3a0a000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000487f73000000000000000000000000000000000010e5fffffff729000000000044ffffffffd205000000000000000000006cffffffffffb600000000000000000000000000000000000000000000000000028effffffff9724b4fffffffb69000000000000000000000000000000000000000000000017d3ffffffffd72e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d7ffffa50d00000000000000000000000000000000000016b1ffffc91500000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e00000000000000000000000000000000000000a2ffffffff730000000000000008edfffffffd1f000000000000000000000000000000000000000000000000000037feffff8c0000000000000026f3fffc87ffffa4000000000000000000000000000066fffffffffa16000000000000000000000000b1ffffffffc5000000000000000000000000000000000000000002c9ffffffffb9ffffffff6c000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc800000000000000000000c4ffffffff750000000000000000000000000be3ffffffff4d000000000099ffffffe8060000000000003fffffffffffbf07000000000000000000000049fcffffffff8500000000000000000000000000000035f1ffffffffffffffe7d3d6ebffffffffffffffdc1a000000000000000000000000b7ffffffffce050000000012eaffffffffc044050000000b58d9ffffffffffffffe59f05000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056ffffffffff820000000000a0ffffffffff3a0000000000000000000000a6ffffffffff6c000000000000000000000000000000000000000000000000000066fbffffffffffffffef440000000000000000000000000000000000000000000000000013cefffffffff76a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010bdffffe4570100000000000000000000000000000463ebffffab0900000000000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb230000000000000000000000000000000000003bffffffffd8000000000000005bffffffffb6000000000000000000000000000000000000000000000000000000009bfffffb2b000000000000005cfffffbffffa40000000000000000000000000000cfffffffffa9000000000000000000000000004affffffffff2e0000000000000000000000000000000000000069ffffffffce21fefffffff1180000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000002bfffffffff1090000000000000000000000000076ffffffffb2000000000027ffffffff5c00000000000001deffffffffffc91f0000000000000000005df6ffffffffec0f000000000000000000000000000028eeffffffffffca5b16000000001f6adbffffffffffd60f0000000000000000000043ffffffffffff6200000000004dfbfffffffffff8dad0defcffffffffffffffffffffff34000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052ffffffffff7d00000000009cffffffffff3500000000000000000000000bd5fffffffff72a000000000000000000000000000000000000000000000000000042eeffffffffffdb2800000000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020efffffeb6b000000000000000000000000000000000000177ac4e9fae7bd6f0d000000000000000000000000000000000375f7ffffd2620e00000000000000000000196fdefffff0640000000000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe828000000000000000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e0000000000000000000000000000000000000000000000000000000013edffffc000000000000000009fffffffffa40000000000000000000000000039ffffffffff410000000000000000000000000002e0ffffffff9800000000000000000000000000000000000016efffffffff5300a8ffffffffa70000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000006dffffffff9e00000000000000000000000000001bfffffffff1030000000000c4ffffffc3000000000000006ffffffffffffff89239020000001154c4ffffffffffff5d000000000000000000000000000000c3fffffffff8690000000000000000000489ffffffffff930000000000000000000066ffffffffffff8800000000000055f4ffffffffffffffffffffffffffffffffffffffff38000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ac33b00000000000000000de1fffffff52400000000003dfeffffffcb0300000000000000000000000028f3ffffffffd006000000000000000000000000000000000000000000000000000025808080807c130000000000000000000000000000000000000000000000000000000000065c7d808080805f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ffffffffe4c0000000000000000000000000000000071f3ffffffffffffffea59000000000000000000000000000000000026a9fdfffff6bb7e573a2d32425b8fc6fdfffffa9c1b0000000000000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe01800000000000000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000000000000000000000000000000000000067ffffff5a000000000000000ad5ffffffa400000000000000000000000000a2ffffffffd80000000000000000000000000000007cfffffffff30e0000000000000000000000000000000000a3ffffffffcd010027fbffffffff4500000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000adffffffff64000000000000000000000000000000dfffffffff35000000000063fffffffe1c0000000000000ae4fffffffffffffffff5ded2e5fdffffffffffffff8000000000000000000000000000000057fffffffffe5700000000000000000000000081fffffffffc2a0000000000000000003fffffffffffff5e0000000000000021affdffffffffffffffffffe3694c4c4c4c4c4c4c10000038ffffffffff240000000000000000000000000000000000000000000000799f020000000000000000000000000000000012bc310000000000000000000000a9fffe92000000000000000026baf1c63b0000000000000053d3efab18000000000000000000000000000057ffffffffff8a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008effffffed1e000000000000000000000000000097ffffffffffffffffffffff780000000000000000000000000000000000002995e9ffffffffffffffffffffffffe18c1f000000000000000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb01000000000000000000000000000000000ff5fffffff712000000008cffffffff7f00000000000000000000000000000000025bb4e5f9f7dca13f000000000002caffffe70e000000000000002cf6ffffa400000000000000000000000013f7ffffffff7200000000000000000000000000000019fbffffffff6b0000000000000000000000000000000041fffffffffe3b00000090ffffffffdb08000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000d4ffffffff36000000000000000000000000000000b0ffffffff5b00000000000ffaffffff6f000000000000005ffffffffffffffffffffffffffffffffffffff86b00000000000000000000000000000000b6ffffffffa80000000000000000000000000001cfffffffff8700000000000000000000b3ffffffffcc040000000000000000001f74afdceffbeed19d4f06000000000000000000000038ffffffffff240000000000000000000000000000000000000000000079ffffa202000000000000000000000000000013d0ffee3100000000000000000046ffffffff0d00000000000000000000000000000000000000000000000000000000000000000000000000000091fffffffffe41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c7ffffffc80500000000000000000000000067ffffffffffe6d1e6fffffffffe4e00000000000000000000000000000000000000033f79add6e7f8f6e5d3a77437010000000000000000000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b00000000000000000000000000000000009dffffffff6f00000006ebfffffffc1c00000000000000000000000000000013c6ffffffffffffffffa9090000000034fdffff8f00000000000000000000000000000000000000000000000075fffffffff71200000000000000000000000000000000adffffffffd400000000000000000000000000000006d7ffffffffa2000000000fe8ffffffff80000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000e8ffffffff200000000000000000000000000000009affffffff6f000000000000baffffffc00000000000000000beffffffffb9befffffffffffffffffffeaf2e000000000000000000000000000000000df9ffffffff3100000000000000000000000000005affffffffdb000000000000000000000a8fedf19c11000000000000000000000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000047ffffffffa40300000000000000000000000014d1ffffffeb100000000000000003d7ffffffbc0000000000000000000000000000000000000000000000000000000000000000000000000000000005c6ffffffffe31100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001eedffffff8e000000000000000000000010f2ffffffbe2d0000002dbdffffffe407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed110000000000000000000000000000000036ffffffffd400000057ffffffffb100000000000000000000000000000003c4fffffffff7fcffffffffb3000000000098fffffb2d0000000000000000000000000000000000000000000001dcffffffffa2000000000000000000000000000000000046ffffffffff3e00000000000000000000000000007cfffffffff118000000000060fffffffff8250000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000faffffffff120000000000000000000000000000008bffffffff820000000000006bfffffff9080000000000000021f1ffffffff572d85c1e6f8f2dcb7742700000000000000000000000000000000000031ffffffffe700000000000000000000000000000011ffffffffff07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000195ffffffffa7030000000000000000000015d3fffffffd5e00000000000000005fffffffff3500000065808080180000000000000000000000000000000000000000000000000000000000000000001ceaffffffffa90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfeffffff4f0000000000000000000078ffffffc505000000000004c1ffffff67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d0000000000000000000000000000000000ceffffffff3a0000bcffffffff4900000000000000000000000000000067ffffffbd2b000553e4ffffff530000000012ebffffc20000000000000000000000000000000000000000000048ffffffffff3b000000000000000000000000000000000001ddffffffffa70000000000000000000000000022f6ffffffff7100000000000001c6ffffffffbb0000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000f9ffffffff130000000000000000000000000000008cffffffff8100000000000029ffffffff4000000000000000005afffffffff52e0000000000000000000000000000000000000000000000000000004affffffffc500000000000000000000000000000000eeffffffff2000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000092ffffffffaa04000000000000000016d4fffffffc5b000000000000000005deffffffac00000000beffffff4c0000000000000000000000000000000000000000000000000000000000000000000043fdffffffff5e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008affffffef20000000000000000000c6ffffff380000000000000031ffffffba00000000000000000000000000000000175a94bedff1fbfbf0dbba8d54110000000000000000000000000000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe9050000000000000000000000000000000067ffffffff9d0021feffffffe002000000000000000000000000000000d9ffffc906000000002efaffffb0000000000064ffffff5d000000000000000000000000000000000000000000b1ffffffffd20000000000000000000000000000000000000078fffffffff916000000000000000000000000b6ffffffffd4040000000000000033fdffffffff5a00000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000e7ffffffff210000000000000000000000000000009affffffff6e00000000000000ebffffff7d0000000000000000009bffffffffde12000000000000000000000000000000000000000000000000000056ffffffffba00000000000000000000000000000000e2ffffffff2d000094fff4e1b6731500000000000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000090ffffffffad0500000000000017d6fffffffc5800000000000000000062ffffffff3000000000a0ffffff840000000000000000003a93d2f3f7e0a5470000000000000000000000000000000000007cfffffffff221000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c4ffffffca060000000000000008faffffe5000000000000000000dbfffff7050000000000000000000000000358befdfffffffffffffffffffffffffab44c010000000000000000000000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff48000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000057de1ef33000000000000caffffd6000000000001c7ffffe80f000000000000000000000000000000000000001efcffffffff6b0000000000000000000000000000000000000016faffffffff7a000000000000000000000054ffffffffff4100000000000000000099ffffffffe80f000000000000000070ffffffff7400000000000000000004387799acdbffffffd80000000000000088ffffffc8000000000000000000d3ffffffff38000000000000000000000000000000b2ffffffff5a00000000000000b1ffffffab00000000000000000008cfffffffffba030000000000000000000000000000000000000000000000000046ffffffffce00000000000000000000000000000000f7ffffffff1d000094fffffffffff57d020000000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000008fffffffffaf050000000019d7fffffffb5500000000000000000000ceffffffbb000000000065fffffff11700000000001476d8ffffffffffffffffaf0b0000000000000000000000000000000001b4ffffffffc50300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001cebffffff91000000000000001fffffffb9000000000000000000abffffff1b000000000000000000000055deffffffffffffffffffffffffffffffffffffd447000000000000000000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a000000000000000000000000000000000098ffffffff46d2fffffffb180000000000000000000000000000000000000100000000000000ceffffce00000000000032fdffff920000000000000000000000000000000000000084fffffffff50f0000000000000000000000000000000000000000aaffffffffe1020000000000000000000de4ffffffffa80000000000000000000013edffffffff95000000000000000070ffffffff74000000000000001887eeffffffffffffffffd80000000000000088ffffffc8000000000000000000aaffffffff66000000000000000000000000000000e1ffffffff320000000000000083ffffffd60000000000000000000024f1ffffffff8a0000000000000000000000000000000000000000000000000023fffffffff10500000000000000000000000000001ffffffffff504000090ffffffffffffffae0200000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000000008dffffffffb20600001ad8fffffffa52000000000000000000003bffffffff49000000000012f5ffffffd7490b1047a2f8ffffffffffffffffffffffbf020000000000000000000000000000000011dfffffffff7d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048feffffff5300000000000031ffffffa90000000000000000009affffff3000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e00000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd7000000000000000000000000000000000030ffffffffb1ffffffffac00000000000000000000000000000000000000000000000000001df8ffff950000000000000095fffffc2f000000000000000000000000000000000005e8ffffffff9c00000000000000000000000000000000000000000043ffffffffff4d0000000000000000008efffffffff41c000000000000000000000069fffffffffd350000000000000070ffffffff740000000000006af6ffffffffffffffffffffd80000000000000088ffffffc80000000000000000006affffffffa200000000000000000000000000001dffffffffef020000000000000057fffffffb050000000000000000000053ffffffffff5800000000000000000000000000000000000000000000000000e7ffffffff4600000000000000000000000000006effffffffbe00000034c3d4f6ffffffffff8000000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff1000000000000000008bffffffffb4071bdafffffff94f0000000000000000000000a1ffffffe30200000000000085fffffffffffffffffffffffffffff8d7dcffffffffff70000000000000000000000000000000000033f8fffffffb3600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086fffffff02300000000002bffffffad0000000000000000009fffffff2a000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb23000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000000000000000000000000000c9ffffffffffffffff440000000000000000000000000000000000000000000000082363dfffffe6170000000000000010e9ffffc5010000000000000000000000000000000057ffffffffff3500000000000000000000000000000000000000000001daffffffffb600000000000000002ffcffffffff7800000000000000000000000002ceffffffffcd0300000000000070ffffffff740000000003a7ffffffffffffffffffffffffd80000000000000088ffffffc800000000000000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000000002fffffffff1d000000000000000000000091fffffffff52f0000000000000000000000000000000000000000000000008affffffffc4000000000000000000000000000be3ffffffff5e0000000000000869f6fffffff618000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff1000000000000000000089ffffffffbadbfffffff94c000000000000000000000006f0ffffff840000000000000005beffffffffffffffffffffffc2590b00002cd4ffffffe404000000000000000000000000000000000067ffffffffdb0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c1ffffffcd070000000019ffffffc4000000000000000000b7ffffff180000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe8280000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f000000000000000000000000000000000062ffffffffffffffdc010000000000000000000000000000000000000000000054fffffffffbaa1900000000000000000061ffffff6000000000000000000000000000000000c1ffffffffcd000000000000000000000000000000000000000000000075fffffffffd2200000000000001c7ffffffffd906000000000000000000000000003afeffffffff6e00000000000070ffffffff74000000009dffffffffffffffffffffffffffd80000000000000088ffffffc800000000000000000000bfffffffff780000000000000000000000000de5ffffffff47000000000000000015ffffffff36000000000000000000000005c8ffffffffde1300000000000000000000000000000000000000000000001af0ffffffff7e000000000000000000000002a5ffffffffd70700000000000000004bffffffff74000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000087fffffffffffffff8490000000000000000000000004cffffffff2900000000000000000898fdffffffffffffeb902c00000000000025fcffffff3f000000000000000000000000000000000000a1ffffffff910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ae9ffffff950000000002effffff3050000000000000003edffffef0200000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe01800000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c00000000000000000000000000000000000af0ffffffffffff76000000000000000000000000000000000000000000000054ffffffffb6210000000000000000000001c4ffffe91000000000000000000000000000002affffffffff62000000000000000000000000000000000000000000000014f7ffffffff8900000000000067ffffffffff47000000000000000000000000000000a2fffffffff11a000000000070ffffffff7400000054ffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000046fffffffff62d000000000000000000000098ffffffffcf00000000000000000001faffffff4f0000000000000000000000001eedffffffffbb0300000000000000000000000000000000000000000000005bfeffffffff950c000000000000000018b1fffffffff63700000000000000000000c0ffffffb6000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085fffffffffff746000000000000000000000000009dffffffda0000000000000000000000277db0c5ba934f06000000000000000000a7ffffff7900000000000000001e72b5def4f8e5c286340bd6fffffffd3b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045fdffffff5700000000b3ffffff590000000000000053ffffffb200000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb0100000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff5800000000000000000000000000000000000093fffffffffff91500000000000000000000000000000000000000000000000d3255adfffff137000000000000000000002ffcffff95000000000000000000000000000094fffffffba8020000000000000000000000000000000000000000000000005eeeffffffeb070000000015eeffffffffaf0000000000000000000000000000000018f1ffffffffaa000000000070ffffffff74000004e1ffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000b3ffffffffea370000000000000000048afffffffffd4200000000000000000000e7ffffff5e000000000000000000000000004bfeffffffff8b0000000000000000000000000000000000000000000000006bfcffffffffec904a1b070a20539ef4fffffffff34800000000000000000000007affffffd6000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ef0ffffffffc90900000000000000000000000000dfffffff8b0000000000000000000000000000000000000000000000000000000074ffffff950000000000001aa1fbffffffffffffffffffc666f9ffffffd80500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fffffff2250000005affffffe51b000000000019e2ffffff5a00000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff610000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000000000000000000094ffffdc030000000000000000000092fffffd3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1fffffffff620000000000000000000000000000000000073ffffffffff470000000070ffffffff74000047ffffffffffffffffffffffffffffffd80000000000000088ffffffc8000000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff800000000000000000000000deffffff66000000000000000000000000000088ffffffffff590000000000000000000000000000000000000000000000003ed9ffffffffffffffffffffffffffffffffc52700000000000000000000000061ffffffe6000000000038ffffffffff24000000000000000000000000000000000000000000d0fffff54c0000002285c7eefcf7deb06a110000000000000000000000000000000000000020dfffffffffffffbd0a00000000000000000000001effffffff49000000000000000000000000000000000000000000000000000000002c80808051000000000044eafffffffffffffffffffffffffcecffffffff6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002beffffffd008000004ddffffffe5651b051b65e4ffffffdf04000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed11000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052605000000000021ffffff41000000000000000000000fe8ffffc70100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fffffffffff7e00000000000000000000000000000000000004d5ffffffffdc0800000070ffffffff74000095ffffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff98020000000000000000000000d5ffffff6e000000000000000000000000000003c1fffffffff530000000000000000000000000000000000000000000000000035cbdfdfffffffffffffffffffff8ae4900000000000000000000000000006bffffffd7000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffa3000380fbfffffffffffffffff576040000000000000000000000000000000021e0fffffff9ffffffffbf0b000000000000000000005bfffffffd0f000000000000000000000000000000000000000000000000000000000000000000000000003df8fffffffffffffde2d1dcf4ffffffffffffffffe30700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018e7ffffff990000003dfcfffffffffffffffffffffffc3e00000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d0000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066faffc1000000000009ffffff6600000000000000000000005dffffff6300000000000000000038fffffffffffffffffffffffffffffff6eaceab783c03000000000000000000000000000000000000000005d6ffffffffdc080000000000000000000000000000000000000042feffffffff8300000070ffffffff740000b9ffffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000016c3fffffffffffffffffffffffffffffa7100000000000000000000000000d3ffffff700000000000000000000000000000001ae9ffffffffdf1300000000000000000000000000000000000000000000000032aafafffffffffffffffffffff4982000000000000000000000000000007effffffc2000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffba09bfffffffffffffffffffffffffcf1b000000000000000000000000000022e2fffffff54176ffffffffc10c0000000000000000008affffffd10000000000000000000000000000000000000000000000000000000000000000000000000018edffffffffffc3510f000000023692f8ffffffffffff680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041fdffffff5a0000005ffbfffffffffffffffffffa5f00000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe90500000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fffffff490000000043ffffff63000000000000000000000000c2ffffeb12000000000000000038ffffffffffffffffffffffffffffffffffffffffffe992240000000000000000000000000000000000007affffffffde2e00000000000000000000000000000000000000000075f5fffffff927000070ffffffff740000d1ffffffffffffffffffffffffffffffd80000000000000088ffffffc800000000000000000000000000000155d8fffffffffffffffffffffda1210000000000000000000000000000dcffffff680000000000000000000000000000000043fdffffffffbc030000000000000000000000000000000000000000000593fdffffffffffe7d3d6ecfffffffffff7720000000000000000000000000092ffffffa5000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffd4b3fffffffce6d1e0f8ffffffffffffdc1d00000000000000000000000024e3fffffff43f000074ffffffffc30d0000000000000000b6ffffffa30000000000000000fcffffffe80000000000000000000000000000000000000000000000009cfffffffffd6f00000000000000000023d0ffffffffffca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007efffffff3280000003ed0ffffffffffffffcf3d0000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff4800000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c0000000000000000000000000000000000000035c7fbffffd21700000000000000000000000000000000000001d7ffffed53070441dfffffff270000000000000000000000002cfbffff98000000000000000038fffffffffffffffffffffffffffffffffffffffffffffffda31b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff740000c4ffffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000000000001357ebed8eef9e5cfa85f1700000000000000000000000000000000e4ffffff6000000000000000000000000000000000007dffffffffff8c000000000000000000000000000000000000000005baffffffffe26a1900000000247beeffffffff92000000000000000000000000baffffff78000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffffffc85a10000000074abbffffffffffd1050000000000000000000025e4fffffff33d0000000072ffffffffc50e00000000000000e0ffffff790000000000000000fcffffffe800000000000000000000000000000000000000000000001dfdffffffff7800000000000000000000000cd2ffffffffff190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002baffffffd30900000002438eb4c5b38d41010000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a00000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd30000000000000000000000000000000000000172faffffffcd1300000000000000000000000000000000000000003dfbfffffffdfbffffffffa300000000000000000000000000008ffffffd340000000000000038ffffffffffd3cccccccccccccccccdd6ebfffffffffffffffff361000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aaffffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4ffffff5400000000000000000000000000000000000070ddfdffffff590000000000000000000000000000000000000090ffffffffb20c00000000000000001accffffffff630000000000000000000000e4ffffff49000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffff7e01000000000000000068feffffffff8100000000000000000026e5fffffff33c00000000000070ffffffffc70f000000000001fbffffff520000000000000000fcffffffe800000000000000000000000000000000000000000000006bffffffffd80200000000000000000000000028fcffffffff56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6cb8e5f9edcb84220000000016e5ffffff9d0000000000000000000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd700000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff95000000000000000000000000000000000014b4ffffffffc60f000000000000000000000000000000000000000000004eefffffffffffffffb00900000000000000000000000000000ddeffffca0200000000000038ffffffffff240000000000000000000000114997eeffffffffffff9a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffd80000000000000088ffffffc8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000effffffff3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000027fcffffffd1080000000000000000000018eaffffffed0b0000000000000000000fffffffff1a000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff7d000000000000000000000070fffffffffa190000000000000028e6fffffff23b00000000000000006fffffffffc9100000000016ffffffff370000000000000000fcffffffe80000000000000000000000000000000000000000000000b1ffffffff6f0000000000000000000000000000a3ffffffff7f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059eafffffffffffffffa8e050000003efcffffff5f00000000000000000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff43000000000000000000000000000000003fe4ffffffffbf0c000000000000000000000000000000000000000000000000177fc9f1fae6af4e000000000000000000000000000000000024c1f9ff6600000000000038ffffffffff2400000000000000000000000000000f88f7ffffffffffad030000000000000000000000000000000000000000000000000024e2fffff7b8250000000000000000000000000000000000acffffff200000001dfeffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000027ffffffff22000000000000000000000000000000000000000000000000000000000000000000000000000000000000008affffffff4f0000000000000000000000007affffffff610000000000000000003bffffffeb00000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000001c5ffffffff7f00000000000029e7fffffff139000000000000000000006dffffffffcb110000002dffffffff1d0000000000000000fcffffffe80000000000000000000000000000000000000000000000ceffffffff2c000000000000000000000000000051ffffffff9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffbe080000007afffffff52a000000000000000000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f0000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe4030000000000000000000000000000027ffcffffffffb8090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000021d6ffffffffff98000000000000000000000000000000000000000000000000000020ddfffffff35c00000000000000000000000000000000acffffff20000000009effffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000000000000000000003eddffffaa00000000000000000000000000000000004cfffffffe0900000000000000000000043c83c1daeff9e6d1ab651d000000000000000000000000000000000000000000cbfffffff8070000000000000000000000002affffffffa100000000000000000065ffffffc000000000000038ffffffffffffffffffffffffffffffffffffffffff500000000000d0ffffffff1c0000000000000000000000004bffffffffe400000000000de7fffffff1380000000000000000000000006afeffffffb40000003cffffffff090000000000000000fcffffffe80000000000000000000000000000000000000000000000e5ffffffff0b000000000000000000000000000025ffffffff9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050ffffffffffecd1ddfeffffffff9f00000001b7ffffffd50b0000000000000000000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c0000000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff7600000000000000000000000000001abfffffffffffaf07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000011c1ffffffffff5b00000000000000000000000000000000000000000000000000001bd9ffffffff9f0b0000000000000000000000000000acffffff200000000015e9ffffffffffffffffffffffffffd80000000000000088ffffffc8000000000000000000000000000000000000000034f4fffff31b000000000000000000000000000000000076ffffffdf000000000000000000025edefffffffffffffffffffffeaa2700000000000000000000000000000000000000eeffffffd90000000000000000000000000003feffffffc40000000000000000007effffffa700000000000038ffffffffffffffffffffffffffffffffffffffffff500000000000d0ffffffff1c00000000000000000000000003e9ffffffff27000000000065fefff036000000000000000000000000000068feffe62700000044ffffffff010000000000000000fcffffffe80000000000000000000000000000000000000000000000e3fffffffc00000000000000000000000000000016ffffffff8e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e0ffffffce3a000000178fffffffff3b00000014e3ffffffa1000000000000000000000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff58000000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d00000000000000000000000000036a808080807c530200000000000000000000000000000000000000000000000000000000000000000000000012558fbbddf1fbfdf7eedcc6a37c470f000000000000000000000038ffffffffff240000000000000000000000000000000000000edefffffffff016000000000000000000000000000000000000000000000000000017d3ffffffffd72e00000000000000000000000000acffffff2000000000002eeefffffffffffffffffffffffff7cccccccccccccce7fffffff4cccccccccca50000000000000000000000000023e9ffffff73000000000000000000000000000000000000a2ffffffb400000000000000001bcafffffffffffffffffffffffffffffc7a000000000000000000000000000000000000f5ffffffd40000000000000000000000000001fbffffffcc00000000000000000091ffffff9200000000000038ffffffffffffffffffffffffffffffffffffffffff500000000000d0ffffffff1c00000000000000000000000000afffffffff6200000000000065ee350000000000000000000000000000000066e426000000004cfffffff8000000000000000000fcffffffe80000000000000000000000000000000000000000000000caffffffff0e00000000000000000000000000002affffffff7900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059ffffffda0d0000000000007effffffb5000000003bfbffffff6200000000000000000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff6100000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014eb6fafffffffffffffffffffffffffffffab86211000000000000000038ffffffffff240000000000000000000000000000000000000038fbffffffff9800000000000000000000000000000000000000000000000000000013cefffffffff76a000000000000000000000000acffffff2000000000000029ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd000000000000000000000000015dbffffffd304000000000000000000000000000000000000dbffffff88000000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa00300000000000000000000000000000000dcfffffff2040000000000000000000000001fffffffffb30000000000000000009affffff9000000000000038ffffffffffd3cccccccccccccccccccccccccccccc3f0000000000d0ffffffff1c000000000000000000000000007fffffffff9200000000000000120000000000000000000000000000000000000c00000000004cfffffff7000000000000000000fcffffffe80000000000000000000000000000000000000000000000a5ffffffff3a000000000000000000000000000056ffffffff53000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2ffffff590000000000000006e4fffff90b0000000076fffffff62d00000000000000000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff58000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ad6fffffffffffffffffffffffffffffffffffffffff9961900000000000038ffffffffff24000000000000000000000000000000000000000094fffffffffa1a00000000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000acffffff2000000000000000046edcffffffffffffffffffffffffffffffffffffffffffffffffffffffd000000000000000000000000bcafffffffe3d00000000000000000000000000000000000017ffffffff4e00000000000014e3fffffffffc9839020000001059d0ffffffffff8600000000000000000000000000000000b1ffffffff4700000000000000000000000070ffffffff870000000000000000007cffffffbb00000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000000000065ffffffffa5000000000000000000000000000000000000000000000000000000000000000045fffffffe000000000000000000fcffffffe8000000318bcce6fbf4d8a65b080000000000000000000059ffffffff890000000000000000000000000000a5fffffffc10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dafffffc0d000000000000000099ffffff420000000001b3ffffffd80c0000000000000000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b0000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd71200000000000046fffffffff55b0000000000000000000000000000000000000000006cf7ffffffff960000000000000000000000000011abfffffffffffffffffee6d4cdd3e2fafffffffffffffffffff685000000000038ffffffffff24000000000000000000000000000000000000000024fdffffffff8200000000000000000000000000000000000000000000000000000000065c7d808080805f00000000000000000000acffffff20000000000000000000024281bcdbedfdffffffffffffffffffffffffffffffffffffffffffd00000000000000000000004b5ffffffffa00000000000000000000000000000000000000056fffffffd11000000000000b8ffffffffe93500000000000000000387fffffffffe470000000000000000000000000000005cffffffffcd070000000000000000000015e8ffffffff3000000000000000000029fefffffd35000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000000000056ffffffffb800000000000000000000000000000000000000000000000000000000000000003dffffffff060000000000000000fcffffffe80012a5ffffffffffffffffffe85c0000000000000000000df5fffffff11400000000000000000000000023fbffffffc100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f2ffffe300000000000000000070ffffff5b000000000012e1ffffffa50000000000000000000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe020000000000000000098fffffffff7270000000000000000000000000000000000000032fcffffffffdf0c0000000000000000000000002ae0ffffffffffffda803c090000000000052d5ea8f4fffffffffffff4000000000038ffffffffff24000000000000000000000000000000000000000000b1ffffffffdb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009dffffffffee1600000000000000000000000000000000000000a4ffffffcf0000000000004bfffffffff52b000000000000000000000094ffffffffd401000000000000000000000000000009deffffffffb00d00000000000000001ccdffffffffbb000000000000000000000089ffffffe44d0500000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000000000050ffffffffbe000000000000000000003078bad8effae7d2b37431010000000000000000000031ffffffff170000000000000000fcffffffe81fdfffffffffffffffffffffffffb50b000000000000000081ffffffffb7030000000000000000000007c7ffffffff4a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feffffd800000000000000000064ffffff6a00000000000038faffffff6600000000000000000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b0000000000000000000cdeffffffffc602000000000000000000000000000000000004cefffffffffe4200000000000000000000000032eeffffffffffd95a020000000000000000000000000966defffffffff4000000000038ffffffffff2400000000000000000000000000000000000000000061ffffffffff2b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffff20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fffffffee1470000000000000000000000000000000000000004edffffff80000000000000c4ffffffff750000000000000000000000000be3ffffffff4d00000000000000000000000000000048feffffffffe26f1c000000002781eefffffffff6250000000000000000000000007dfbfffffffb47000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000000005dffffffffaf000000000000000047caffffffffffffffffffffffe37c0d00000000000000001bffffffff300000000000000000fcfffffff2defffffffae2d1e4fcffffffffffffc10c000000000000000be3ffffffffb512000000000000000014bcffffffffc50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0ffffe500000000000000000072ffffff5b0000000000000072fffffff730000000000000000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd30000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a00000000000000000000003ffeffffffff73000000000000000000000000000000000076ffffffffff9700000000000000000000000022e9ffffffffff8c030000000000000000000000000000000004e5fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000023ffffffffff670000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff2000000000000000000000043c83c1daeff9e6d1ab651d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047ffffffff2b00000000002bfffffffff1090000000000000000000000000076ffffffffb20000000000000000000000000000000069ffffffffffffffe8d4d7edfffffffffffff74500000000000000000000000000002be1ffffff4c000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000000006bffffffffa00000000000000badffffffffffffffffffffffffffffffe9540000000000000004fdffffff4a0000000000000000fcffffffffffffb14c080000000f5ad4ffffffffffa9000000000000000031f3ffffffffee7f2a00000000267dedffffffffea1f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d8fffffe110000000000000000a0ffffff430000000000000000b0ffffffda0d0000000000000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff950000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e000000000000000000000000000091fffffffff72700000000000000000000000000000023f6ffffffffdf0c000000000000000000000006ccfffffffff95d00000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000e5ffffffff9a0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000000000000000025edefffffffffffffffffffffeaa2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8ffffffd60000000000006dffffffff9e00000000000000000000000000001bfffffffff1030000000000000000000000000000000057edffffffffffffffffffffffffffffdd3b000000000000000000000000000065f2ffffffff4c000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000000000091ffffffff8800000000001bd0fffffffffffffce5d2d7ecffffffffffffff8100000000000000e7ffffff6e0000000000000000fcfffffffff85900000000000000000592ffffffffff53000000000000000047f2ffffffffffffefd8d6ecfffffffffffff13d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fffffff620000000000000009ebfffffb0c000000000000000010dfffffffa900000000000000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff43000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b0460000000000000000000000000000000009daffffffffc6020000000000000000000000000000bcfffffffffe4300000000000000000000000082ffffffffff690000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000bfffffffffbc0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000000000001bcafffffffffffffffffffffffffffffc7a000000000000000000000000000000043c83c1daeff9e6d1ab651d000000000000000000000000000000000000000011f8ffffff72000000000000adffffffff64000000000000000000000000000000dfffffffff3500000000000000000000000000000000001894f3ffffffffffffffffffffe9810b000000000000000000000000000070ffffffed611400000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c00000000000000000000000000bfffffffff570000000005c8ffffffffffc55410000000001e69ccffffffffe90f000000000000bfffffff980000000000000000fcfffffffd4e00000000000000000000009fffffffffe103000000000000000026d2ffffffffffffffffffffffffffffd8270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055ffffffe11200000000000089ffffffbc0000000000000000000035f9ffffff6a000000000000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe40300000000000000000000000000000000000000155792bcddf0faf9eedab88b500f0000000000000000000000000000000000000039fdffffffff730000000000000000000000000060ffffffffff9800000000000000000000000020f7ffffffffa1000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000adffffffffd90000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa0030000000000000000000000025edefffffffffffffffffffffeaa2700000000000000000000000000000000000078fffffff410000000000000d4ffffffff36000000000000000000000000000000b0ffffffff5b000000000000000000000000000000000000000f5b9acfe4f7f4e1c98f50070000000000000000000000000000001bf9ffffff44000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1d00000000000000000000000010f9ffffffff240000000090fffffffffa620000000000000000000043cefffb3f0000000000000093ffffffc30000000000000000fcffffffe80000000000000000000000000fe7ffffffff4f0000000000000000000564dfffffffffffffffffffffe87108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ddffffffd43f0100001a96ffffffff4700000000000000000000006ffffffff8320000000000000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008afffffffff727000000000000000000000016edffffffffe00d0000000000000000000000009affffffffef0f000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff24000000000000000000000000000000000000000000009affffffffe50000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000000014e3fffffffffc9839020000001059d0ffffffffff86000000000000000000001bcafffffffffffffffffffffffffffffc7a0000000000000000000000000000000007e6ffffff9800000000000000e8ffffffff200000000000000000000000000000009affffffff6f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006effffffc600000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffa100000000000000000000000068ffffffffde0000000024fcfffffffe4e000000000000000000000000024e38000000000000000066fffffff50500000000000000fcffffffe8000000000000000000000000007bffffffffb50000000000000000000000043e86c3dcf2f6e1ca924a0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfeffffffffeed2deffffffffffaf00000000000000000000000000adffffffdd0f0000000000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007d4ffffffffc60200000000000000000000a7ffffffffff4300000000000000000000000014f8ffffffff8100000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff24000000000000000000000000000000000000000000008cffffffffed0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000000000b8ffffffffe93500000000000000000387fffffffffe4700000000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa003000000000000000000000000000067fffffffb2300000000000000faffffffff120000000000000000000000000000008bffffffff820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097ffffff9800000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffff82000000000000000000000fe8ffffffff7f000000009cffffffff920000000000000000000000000000000000000000000000002cffffffff3700000000000000fcffffffe8000000000000000000000000001efffffffff4030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077ffffffffffffffffffffffce0f000000000000000000000000000fddffffffad000000000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033fbffffffff730000000000000000004affffffffff980000000000000000000000000069fffffffff51100000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff24000000000000000000000000000000000000000000009bffffffffe40000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000004bfffffffff52b000000000000000000000094ffffffffd40100000000000014e3fffffffffc9839020000001059d0ffffffffff86000000000000000000000000000ae5ffffff9c0000000000000000f9ffffffff130000000000000000000000000000008cffffffff81000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000097ffffff8d00000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffffffa309000000000000000ac0fffffffff81e0000000ef9fffffff61400000000000000000000000000000000000000000000000001eaffffff7600000000000000fcffffffe80000000000000000000000000000dfffffffff32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057e9fffffffffffffffda00b00000000000000000000000000000032f8ffffff6e00000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb000000000000000000000000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f0000000000000000000000000000000000000082fffffffff727000000000000000ce1ffffffffe10d00000000000000000000000000bbffffffffae0000000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000adffffffffd80000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff2000000000c4ffffffff750000000000000000000000000be3ffffffff4d000000000000b8ffffffffe93500000000000000000387fffffffffe4700000000000000000000000079fffffff91e0000000000000000e7ffffffff210000000000000000000000000000009affffffff6e000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000085ffffffa100000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffd3ffffdb63110000000e5bddffffffffff81000000004bffffffff9f0000000000000000000000000000000000000000000000000000abffffffc300000000000000fcffffffe80000000000000000000000000000afffffffff620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6cb8e4f9edcf8b2d0000000000000000000000000000000000004de9fffff9350000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd7120000000000000000000000000000000000000000000db5ffffffe64800000067f4ffffff9203000000000000000000000000000000000000000005cfffffffffc60200000000000091ffffffffff440000000000000000000000000004f5ffffffff6a0000000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000bfffffffffbc0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000002bfffffffff1090000000000000000000000000076ffffffffb200000000004bfffffffff52b000000000000000000000094ffffffffd4010000000000000000000000e3ffffff8a000000000000000000d3ffffffff38000000000000000000000000000000b2ffffffff5a000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000072ffffffb600000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff27c2fffffffee0d0e0faffffffffffffcd07000000008cffffffff5900000000000000000000000000000000000000000000000000005efffffffd15000000000000fcffffffe8000000000000000000000000000095ffffffff75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe0200000000000000000000000000000000000000000000000028effffffff9724b4fffffffb6900000000000000000000000000000000000000000000002ef9ffffffff73000000000036fdffffffff9900000000000000000000000000002fffffffffff3600000000000000000000000000000005a5ccccccccccccf9fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000e7ffffffff9a0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000006dffffffff9e00000000000000000000000000001bfffffffff10300000000c4ffffffff750000000000000000000000000be3ffffffff4d0000000000000000000000a2ffffe30b000000000000000000aaffffffff66000000000000000000000000000000e1ffffffff32000000000000000000000000000000000000000000005cffffffff880000000000000000000000000000000000004effffffdb00000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0ca5ffffffffffffffffffffffffd0120000000000beffffffff1e00000000000000000000000000000000000000000000000000000ff9ffffff67000000000000fcffffffe8000000000000000000000000000086ffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b000000000000000000000000000000000000000000000000000066fbffffffffffffffef44000000000000000000000000000000000000000000000000007bfffffffff72700000005d2ffffffffe10d000000000000000000000000000054ffffffffff1300000000000000000000000000000023fffffffffffffffffffffff4000000000038ffffffffff2400000000000000000000000000000000000000000025ffffffffff650000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000adffffffff64000000000000000000000000000000dfffffffff350000002bfffffffff1090000000000000000000000000076ffffffffb20000000000000000000000005ee953000000000000000000006affffffffa200000000000000000000000000001dffffffffef02000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000025fffffffd0a000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c0000d0ffffffff1c000057e8fffffffffffffffffb8c0c000000000000d2fffffffd03000000000000000000000000000000000000000000000000000000b3ffffffc9000000000000fcffffffe8000000000000000000000000000080ffffffff8e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a0000000000000000000000000000000000000000000000000000000042eeffffffffffdb28000000000000000000000000000000000000000000000000000003caffffffffc60200007bffffffffff4500000000000000000000000000000070fffffffffa0000000000000000000000000000000024fffffffffffffffffffffff4000000000038ffffffffff2400000000000000000000000000000000000000000063ffffffffff290000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000d4ffffffff36000000000000000000000000000000b0ffffffff5b0000006dffffffff9e00000000000000000000000000001bfffffffff1030000000000000000000000000d000000000000000000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000002f8ffffff35000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000d0ffffffff1c000000085eabdcf5f7dfbf74200000000000000000e5ffffffea0000000000000000000000000000000000000000000000000000000051ffffffff2c0000000000fcffffffe800000000000000000000000000008dffffffff7f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000358befdfffffffffffffffffffffffffab44c01000000000000000000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e0000000000000000000000000000000000000000000000000000000000000025808080807c130000000000000000000000000000000000000000000000000000000029f7ffffffff730026f7ffffffff9a000000000000000000000000000000007dfffffffff00000000000000000000000000000000024fffffffffffffffffffffff4000000000038ffffffffff24000000000000000000000000000000000000000000b4ffffffffd8000000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000e8ffffffff200000000000000000000000000000009affffffff6f000000adffffffff64000000000000000000000000000000dfffffffff3500000000000000000000000000000000000000000000000000bfffffffff780000000000000000000000000de5ffffffff4700000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000000d3ffffff62000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000d0ffffffff1c000000000000000000000000000000000000000000f3fffffffffffffffffffffffffffffffffffffffffffff853000000000000000003e1ffffff9a0000000000fcffffffe800000000000000000000000000009bffffffff700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055deffffffffffffffffffffffffffffffffffffd447000000000000000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b04600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073fffffffff71fc0ffffffffe20e0000000000000000000000000000000085fffffffff00000000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000027feffffffff7f000000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000faffffffff120000000000000000000000000000008bffffffff82000000d4ffffffff36000000000000000000000000000000b0ffffffff5b0000000000000000000000000000000000000000000000000046fffffffff62d000000000000000000000098ffffffffcf0000000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000000abffffff8f000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000d0ffffffff1c000000000000000000000000000000000000000000e4ffffffffffffffffffffffffffffffffffffffffffffff9100000000000000000078fffffff81800000000fcffffffe80000000000000000000000000000c1ffffffff58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e0000000000000000000000000000000000000000000000155792bcddf0faf9eedab88b500f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c3ffffffffd6ffffffffff4600000000000000000000000000000000007efffffffffa0000000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000097fffffffff817000000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000f9ffffffff130000000000000000000000000000008cffffffff81000000e8ffffffff200000000000000000000000000000009affffffff6f000000000000000038ffffffffff1c0000000000000000000000b3ffffffffea370000000000000000048afffffffffd420000000000000000000000000000000000000000000000005cffffffff88000000000000000000000000000000000000008affffffb6000000000000000000000000000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000000000000000000000000cfffffffffffffffffffffffffffffffffffffffffffffff8a00000000000000000010efffffff8a00000000fcffffffe80000000000000000000000000001eeffffffff270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb2300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff740000000000000000000000000000000000000000000063e3ffffbc00000070ffffffff7400000000000000000000000000000024f5ffffffffffffffff9b00000000000000000000000000000000000071ffffffffff1400000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000003cfcffffffff940000000000000000000000000000000000006afffffffffb0e00000000000000000000000000000000000000000000acffffff20000000e7ffffffff210000000000000000000000000000009affffffff6e000000faffffffff120000000000000000000000000000008bffffffff82000000000000000038ffffffffff1c000000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff80000000000000000000000000368acce7fbf2d49f4e020000005cffffffff880000000000000000000000000000000000000079ffffffcb000000000000000000000000000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000000000000000000000000aeffffffff260000000000000000000000000000daffffff76000000000000000000007bfffffff71c000000fcffffffe9000000000000000000000000003bfffffffff20100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe828000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff7400000000000000000000000000000000000000000047fdffffffbc00000070ffffffff74000000000000000000000000000000006cffffffffffffffe20e00000000000000000000000000000000000055ffffffffff3800000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000fe0ffffffffee1300000000000000000000000000000000000de5ffffffffff9300000000000000000000000000000000000000000000acffffff20000000d3ffffffff38000000000000000000000000000000b2ffffffff5a000000f9ffffffff130000000000000000000000000000008cffffffff81000000000000000038ffffffffff1c0000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff9802000000000000000000001fb2ffffffffffffffffffda4200005cffffffff880000000000000000000000000000000000000067ffffffde000000000000001cffffffffffffffffffffffffffffffffffffffffff04000000d0ffffffff1c0000000000000000000000000000000000000000006effffffff5f0000000000000000000000000001f1ffffff5e000000000000000000000ceaffffff9d000000fcffffffff6f0000000000000000000000009affffffffaf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe0180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff7400000000000000000000000000000000000000001debffffffffbc00000070ffffffff740000000000000000000000000000000062ffffffffffffffa00000000000000000000000000000000000000031ffffffffff6d00000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000012c4ffffffffff5600000000000000000000000000000000000091fffffffffffffd33000000000000000000000000000000000000000000acffffff20000000aaffffffff66000000000000000000000000000000e1ffffffff32000000e7ffffffff210000000000000000000000000000009affffffff6e000000000000000038ffffffffff1c0000000000000000000000000016c3fffffffffffffffffffffffffffffa71000000000000000000000032eefffffffffffffffffffffffe98055cffffffff880000000000000000000000000000000000000063ffffffe4000000000000001cffffffffffffffffffffffffffffffffffffffffff04000000d0ffffffff1c0000000000000000000000000000000000000000002affffffffb8000000000000000000000000002effffffff21000000000000000000000067fffffffb0c0000fcfffffffffd54000000000000000000002cfcffffffff4f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb010000000000000000000000000000000000002bbff3ca410000000000000059d7f1af1c0000000000000000000000000038ffffffff740000000000000000000000000000000000000006c8ffffffffffbc00000070ffffffff740000000000000000000000000000001ff2fffffffffffffffe4600000000000000000000000000000000000005f6ffffffffb500000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000023d8ffffffffff9200000000000000000000000000000000000031fcffffffffffffffcb020000000000000000000000000000000000000000acffffff200000006affffffffa200000000000000000000000000001dffffffffef02000000d3ffffffff38000000000000000000000000000000b2ffffffff5a000000000000000038ffffffffff1c00000000000000000000000000000155d8fffffffffffffffffffffda121000000000000000000000027eefffffffffffff4dad0e6ffffffffb766ffffffff880000000000000000000000000000000000000082ffffffd1000000000000001cffffffffffffffffffffffffffffffffffffffffff04000000d0ffffffff1c00000000000000000000000000000000000000000000c4fffffffe3500000000000000000000000090ffffffdb00000000000000000000000002c9ffffc2000000fcfffffffffffd7d01000000000000001cdeffffffffe205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b000000000000000000000000000000000010e5fffffff729000000000044ffffffffd20500000000000000000000000038ffffffff740000000000000000000000000000000000000093ffffffffffffbc00000070ffffffff74000000000000000000000000000001bfffffffffdbfcffffffe512000000000000000000000000000000000000c0fffffffff818000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000118bf8ffffffffffa902000000000000000000000000000000000002c9ffffffffb9ffffffff6c0000000000000000000000000000000000000000acffffff2000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000aaffffffff66000000000000000000000000000000e1ffffffff32000000000000000038ffffffffff1c0000000000000000000000000000000001357ebed8eef9e5cfa85f1700000000000000000000000001c1ffffffffffb83e030000001b72e7fffff1ffffffff8800000000000000000000000000000000000000cdffffffa80000000000000016ccccccccccccccccedffffffffd9cccccccccccccc03000000d0ffffffff1c000000000000000000000000000000000000000000004bffffffffd10d000000000000000000002cf6ffffff7a0000000000000000000000000032f07404000000fcfffffff2dcffffc650080000001870eeffffffffff51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed110000000000000000000000000000000056ffffffffff820000000000a0ffffffffff3a00000000000000000000000038ffffffff7400000000000000000000000000000000000057ffffffffffffffbc00000070ffffffff74000000000000000000000000000071fffffffffd36a5ffffffffaa0000000000000000000000000000000000006fffffffffff8b000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000124d9bf0ffffffffffff970200000000000000000000000000000000000069ffffffffce21fefffffff11800000000000000000000000000000000000000acffffff2000000000bfffffffff780000000000000000000000000de5ffffffff47000000006affffffffa200000000000000000000000000001dffffffffef02000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000059ffffffffff7e000000000000000014b4ffffffffffff880000000000000000000000000000000000005dffffffff6400000000000000000000000000000000a4ffffffff400000000000000000000000d0ffffffff1c0000000000000000000000000000000000000000000000b6ffffffffc218000000000000000029dfffffffed0d00000000000000000000000000000d0000000000fcffffffe81ddefffffffbdbd1e5feffffffffffffa500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d0000000000000000000000000000000052ffffffffff7d00000000009cffffffffff3500000000000000000000000038ffffffff74000000000000000000000000000000000028f3ffffffffffffffbc00000070ffffffff740000000000000000000000000029f7ffffffff8d0019eeffffffff5d000000000000000000000000000000000019fafffffffff3140000000000000000000000000000000000000000000000000000000000000038ffffffffffd3cccccccccccccccccdd8edfffffffffffffffff25e0000000000000000000000000000000000000016efffffffff5300a8ffffffffa700000000000000000000000000000000000000acffffff200000000046fffffffff62d000000000000000000000098ffffffffcf000000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000c2ffffffffab000000000000000000000197ffffffffff88000000000000000000000000000000000a73faffffffee0c00000000000000000000000000000000a4ffffffff400000000000000000000000d0ffffffff1c000000000000000000000000000000000000000000000014e3ffffffffec7f27000000002686f4ffffffff5d000000000000000000000000000000000000000000fcffffffe8001cc2ffffffffffffffffffffffffae04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe9050000000000000000000000000000000de1fffffff52400000000003dfeffffffcb0300000000000000000000000038ffffffff74000000000000000000000000000000000bd5ffffffffffffffffbc00000070ffffffff7400000000000000000000000004cbffffffffdc0a00005cfffffffff01f0000000000000000000000000000000000a3ffffffffffb40100000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffffffffffffca0190000000000000000000000000000000000000000a3ffffffffcd010027fbffffffff45000000000000000000000000000000000000acffffff200000000000b3ffffffffea370000000000000000048afffffffffd42000000000000bfffffffff780000000000000000000000000de5ffffffff4700000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000024fffffffffd21000000000000000000000002abffffffff880000000000000000000000000035c3d5f7ffffffffff6c0000000000000000000000000000000000a4ffffffff400000000000000000000000d0ffffffff1c0000000000000000000000000000000000000000000000002de3ffffffffffffefd8d4ebffffffffffff8d00000000000000000000000000000000000000000000fcffffffe800000275f3fffffffffffffffff16f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff480000000000000000000000000000000026baf1c63b0000000000000053d3efab180000000000000000000000000038ffffffff7400000000000000000000000000000000a5fffffffff4ebffffffbc00000070ffffffff740000000000000000000000007ffffffffffe4000000000afffffffffc0020000000000000000000000000000000028faffffffffff7d00000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffe58d2100000000000000000000000000000000000000000041fffffffffe3b00000090ffffffffdb080000000000000000000000000000000000acffffff20000000000011e0fffffffffd9c3d02000000115ad2ffffffffff800000000000000046fffffffff62d000000000000000000000098ffffffffcf0000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000068ffffffffc0000000000000000000000000005cffffffff880000000000000000000000000090ffffffffffffff9d000000000000000000000000000000000000a4ffffffff400000000000000000000000d0ffffffff1c000000000000000000000000000000000000000000000000001bcafffffffffffffffffffffffffffd780000000000000038ffffffffff1c000000000000000000fcffffffe800000000116cb5e2f7f4dbb565130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff740000000000000000000000000000006affffffffff59e2ffffffbc00000070ffffffff74000000000000000000000033fbffffffff99000000000017ecffffffff7500000000000000000000000000000000008dfffffffffffe8201000000000000000000000000000000000000002a160000000000000038fffffffffffffffffffffffffffffef5e9ccaa7538020000000000000000000000000000000000000000000006d7ffffffffa2000000000fe8ffffffff800000000000000000000000000000000000acffffff200000000000002ae0fffffffffffff6ded3e8fdffffffffffff98020000000000000000b3ffffffffea370000000000000000048afffffffffd420000000000000000000038ffffffffff1c00000000000000000000000000000041cbf3c237000000000057d4f2b8280000000000000000009affffffff76000000000000000000000000005cffffffff880000000000000000000000000094fffffffffff17300000000000000000000000000000000000000a4ffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025ee1ffffffffffffffffffffbe3a000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000000000000035f9ffffffff9400edffffffbc00000070ffffffff740000000000000000000008d6ffffffffe30e00000000000058fffffffff92e0000000000000000000000000000000009d3ffffffffffffae150000000000000000000000000000000030bbfff02c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cfffffffff118000000000060fffffffff82500000000000000000000000000000000acffffff200000000000000016c3fffffffffffffffffffffffffffffa710000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff80000000000000000000000038ffffffffff1c00000000000000000000000000002cf8fffffff32300000046ffffffffe3100000000000000000caffffffff4b000000000000000000000000005cffffffff880000000000000000000000000094fff3e0b36f120000000000000000000000000000000000000000a4ffffffff40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b94c9eaf9f5dfc27f330000000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000000000000000002872abd2eefafbf1d9b47e38000000000000000000000000005ddcfacc3d00000038ffffffff740000000000000000000000000012e1ffffffffc90600f0ffffffbc00000070ffffffff74000000000000000000008dffffffffff4c0000000000000000aaffffffffd3070000000000000000000000000000000027ecfffffffffffff4871200000000000000000000000037a7feffffffcf050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022f6ffffffff7100000000000001c6ffffffffbb00000000000000000000000000000000acffffff2000000000000000000155d8fffffffffffffffffffffda1210000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff9802000000000000000000000038ffffffffff1c000000000000000000000000000084ffffffffff7a000000a6ffffffffff560000000000000000e1ffffffff28000000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f0000000000000000000048c9ffffffffffffffffffffffffdc61030000000000000000005bfffffffffb31000038ffffffff7400000000000000000000000001b6ffffffffec1e0000f0ffffffbc00000070ffffffff740000000000000000003ffdffffffffa500000000000000000014e9ffffffff8d000000000000000000000000000000000036effffffffffffffff8b3713d1c0a020b16355b95ddffffffffffffff65000000000000000000000000000000001a7bc3e4f9e8ce9b39000000000000000000000000000000000000000000000000b6ffffffffd4040000000000000033fdffffffff5a000000000000000000000000000000acffffff200000000000000000000001357ebed8eef9e5cfa85f1700000000000000000000000000000016c3fffffffffffffffffffffffffffffa710000000000000000000000000038ffffffffff1c000000000000000000000000000080ffffffffff75000000a2ffffffffff510000000000000000f0ffffffff1b000000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c00000000000000002bc1ffffffffffffffffffffffffffffffffd7460000000000000000d1ffffffffffb0000038ffffffff740000000000000000000000007dfffffffffd48000000f0ffffffbc00000070ffffffff7400000000000000000ddfffffffffea140000000000000000000052fffffffffe4100000000000000000000000000000000002adfffffffffffffffffffffffffffffffffffffffffffffffffffa1040000000000000000000000000000000034ffffffffffffffff8b0000000000000000000000000000000000000000000054ffffffffff4100000000000000000099ffffffffe80f0000000000000000000000000000acffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000155d8fffffffffffffffffffffda121000000000000000000000000000038ffffffffff1c000000000000000000000000000026f6fffffff01e0000003ffeffffffdf0c0000000000000000fdffffffff0f000000000000000000000000005cffffffff88000000000000000000003078bad8effae7d2b3743101000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff58000000000000004ef2fffffffffffffffffffffffffffffffffffffd7500000000000000f4ffffffffffd1000038ffffffff74000000000000000000000044fdffffffff8100000000f0ffffffbc00000070ffffffff7400000000000000009cffffffffff58000000000000000000000000a7ffffffffe21000000000000000000000000000000000000fa4fffffffffffffffffffffffffffffffffffffffffffff76900000000000000000000000000000000000000a07f3e2f59e3ffffff4900000000000000000000000000000000000000000de4ffffffffa80000000000000000000013edffffffff950000000000000000000000000000acffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000001357ebed8eef9e5cfa85f170000000000000000000000000000000038ffffffffff1c0000000000000000000000000000003bc7f1be31000000000051d1f0b423000000000000000000f8ffffffff16000000000000000000000000005cffffffff88000000000000000047caffffffffffffffffffffffe37c0d00000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff6100000000000068feffffffffffffffffffffffffffffffffffffffffff96000000000000d0ffffffffffad000038ffffffff74000000000000000000001beaffffffffba0200000000f0ffffffbc00000070ffffffff74000000000000004bffffffffffb10000000000000000000000000012e7ffffffffa50000000000000000000000000000000000000040caffffffffffffffffffffffffffffffffffffffb2220000000000000000000000000000000000000000000000000062ffffff8600000000000000000000000000000000000000008efffffffff41c000000000000000000000069fffffffffd3500000000000000000000000000acffffff20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000e7ffffffff23000000000000000000000000005cffffffff880000000000000badffffffffffffffffffffffffffffffe954000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe8000000000000000000000000000000000000000000000000000000000041cbf3c237000000000057d4f2b8280000000000000038ffffffffff1c000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff5800000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff69000000000055fffffffff92d000038ffffffff7400000000000000000005c5ffffffffe3140000000000f0ffffffbc00000070ffffffff7400000000000013e7fffffffff01a00000000000000000000000000004dffffffffff5800000000000000000000000000000000000000003ca4f1fffffffffffffffffffffffffff1a031000000000000000000000000000000000000000000000000000003a3ffffff6c000000000000000000000000000000000000002ffcffffffff7800000000000000000000000002ceffffffffcd03000000000000000000000000acffffff20000000000000000000000000004ffffff59c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000d3ffffffff3e000000000000000000000000005cffffffff8800000000001bd0fffffffffffffce5d2d7ecffffffffffffff810000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe8000000000000000000000000000000000000000000000000000000002cf8fffffff32300000046ffffffffe31000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b0000000018e8fffffffffff4780900000000000000000159e2fffffffffff936000000000056daf9c93700000038ffffffff7400000000000000000090fffffffffa39000000000000f0ffffffbc00000070ffffffff74000000000000aaffffffffff6400000000000000000000000000000000a2ffffffffee1c00000000000000000000000000000000000000000007427baccde8f4fdf6ebd2af804508000000000000000000000000000000000000000000000000002a5f8eddffffffd60c00000000000000000000000000000000000001c7ffffffffd906000000000000000000000000003afeffffffff6e000000000000000000000000acffffff200000000000000000000000000000b5ffffffa50100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000112000000000000000000000000000000000000080000000000000000a5ffffffff6e000000000000000000000000005cffffffff880000000005c8ffffffffffc55410000000001e69ccffffffffe90f00000000000000000000000000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000084ffffffffff7a000000a6ffffffffff5600000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d0000000095ffffffffffe53100000000000000000000000017caffffffffffc10000000000000000000000000038ffffffff74000000000000000055ffffffffff6e00000000000000f0ffffffbc00000070ffffffff7400000000005affffffffffbc000000000000000000000000000000000010e5ffffffffbc0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086fffffffff1900f0000000000000000000000000000000000000067ffffffffff47000000000000000000000000000000a2fffffffff11a0000000000000000000000acffffff20000000000000000000000000000023f8ffffff8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000095da1a0000000000000000000000000000000015d474000000000000006bffffffffab000000000000000000000000005cffffffff880000000090fffffffffa620000000000000000000043cefffb3f0000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000080ffffffffff75000000a2ffffffffff5100000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c0000001cf8fffffffff42800000000000000000000000000000edcffffffffff4000000000000000000000000038ffffffff740000000000000026f2ffffffffa90000000000000000f0ffffffbc00000070ffffffff74000000001aeefffffffff52100000000000000000000000000000000000049ffffffffff6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035fffff64608000000000000000000000000000000000000000015eeffffffffaf0000000000000000000000000000000018f1ffffffffaa0000000000000000000000acffffff2000000000000000000000000000000082ffffffff6d000000000000000000000000000000000090fffff791020000000000059bf9ffff640000000000000000000000000038ffffffffff1c00000000000000000091ffffd818000000000000000000000000000014d2ffff7400000000000029fffffffff80f0000000000000000000000005cffffffff8800000024fcfffffffe4e000000000000000000000000024e38000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000026f6fffffff01e0000003ffeffffffdf0c00000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd3000000008bffffffffff620000000000000000000000000000000034fdffffffffb700000000000000000000000038ffffffff740000000000000ad3ffffffffd80c0000000000000000f0ffffffbc00000070ffffffff7400000000b7fffffffff55d000000000000000000000000000000000000000082f9fffffff72a0000000000000000000000000000033e7cafd3edf8fcf2e5c5a067240000000000000000000000000000000000000000000000000000000000000001e5ffff27000000000000000000000000000000000000000000a1fffffffff620000000000000000000000000000000000073ffffffffff4700000000000000000000acffffff2000000000000000000000000000000009dffffffffd530000000000000000000000000000000002adffffffaa0600000009b5ffffff83000000000000000000000000000038ffffffffff1c000000000000000011deffffffd61600002174abc3c1a66b19000013d1ffffffe912000000000000c3ffffffff8400000000000000000000000063ffffffff880000009cffffffff9200000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe80000014495d1e8fbf4d8a65b08000000000000000000000000000000003bc7f1be31000000000051d1f0b4230000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff9500000000e0ffffffffda020000000000000000000000000000000000aefffffffffb12000000000000000000000038ffffffff74000000000000a2fffffffff42b000000000000000000f0ffffffbc00000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e8de8ffffffffffffffffffffffffffc960030000000000000000000000000000000000000000000000001562a1d5f6fffffffdf4e6c69f652000000000000000000000000000003fffffffffff7e00000000000000000000000000000000000004d5ffffffffdc08000000000000000000acffffff20000000000000000000000000000000004ffffffffff73c0000000000000000000000000000000009c7ffffffb80a000dc0ffffffa200000000000000000000000000000038ffffffffff1c00000000000000000021e3ffffffd434a9fdfffffffffffffa9e29cfffffffed2e0000000000000057fffffffff9320000000000000000000018e1ffffffff8800000ef9fffffff61400000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe8002ec4ffffffffffffffffffe85c0000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff4300000023ffffffffff6d0000000000000000000000000000000000003effffffffff50000000000000000000000038ffffffff74000000000067ffffffffff5b00000000000000000000f0ffffffbc00000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001194faffffffffffffffffffffffffffffffffffd7450000000000000000000000000000000000000000003fb2fcfffffffffffffffffffffffffffec253010000000000000000000005d6ffffffffdc080000000000000000000000000000000000000042feffffffff83000000000000000000acffffff200000000000000000000000000000000000b3ffffffffee290000000000000000000000000000000014dbffffffc421caffffffbd0500000000000000000000000000000038ffffffffff1c0000000000000000000025e7ffffffffffffffffffffffffffffffffffffef32000000000000000001c3ffffffffec37000000000000000024d7ffffffffff8800004bffffffff9f0000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe84cf6ffffffffffffffffffffffffb50b000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe40300000056ffffffffff2600000000000000000000000000000000000004f3ffffffff85000000000000000000000038ffffffff740000000033f8ffffffff960000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000000000000044e8fffffffffffffffffffffffffffffffffffffffffe9104000000000000000000000000000000000018a9ffffffffffffffffffffffffffffffffffffffcc340000000000000000007affffffffde2e00000000000000000000000000000000000000000075f5fffffff9270000000000000000acffffff20000000000000000000000000000000000017c2fbffffffe0190000000000000000000000000000000024ebfffffffaffffffd30f0000000000000000000000000000000038ffffffffff1c00000000000000000000002bebfffffffffffffffffffffffffffffffff1360000000000000000000025f6fffffffffd9837010000002e8cf5ffffffffffff8800008cffffffff590000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcfffffffafbfffffffae2d1e4fcffffffffffffc10c0000000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff760000000079ffffffffe90000000000000000000000000000000000000000bdffffffffa7000000000000000000000038ffffffff7400000011dfffffffffcb060000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000000000006efdffffffffffffffffffffffffffffffffffffffffffffffb90c0000000000000000000000000000005eeffffffffffffffffffffffffffffffffffffffffffffc79010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000039f6ffffffffffe51d000000000000000000000000000000000038ffffffffff1c0000000000000000000000004ffffffffff488310a0d368ff7ffffffff5000000000000000000000000046f6fffffffffffff3dbd7f2ffffffffc5fdffffff880000beffffffff1e0000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffffffffb14c080000000f5ad4ffffffffffaa0000000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d000000008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb00000037ffffff3900000038ffffffff74000001b3ffffffffed1f000000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000074ffffffffffffffffe19a532e180406122a5d99dfffffffffffffbd070000000000000000000000000077ffffffffffffffe79f562f180406122a5e9be2ffffffffffffa20300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000000000052fdfffffff23000000000000000000000000000000000000038ffffffffff1c000000000000000000000000b2ffffffd32100000000000027dbffffff9f0000000000000000000000000043ebffffffffffffffffffffffffbe0be2ffffff880000d2fffffffd030000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcfffffffff85900000000000000000592ffffffffff5300000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff61000000000096ffffffffbb00000000000000000000000000000000000000008fffffffffc500000054ffffff5500000038ffffffff7400007afffffffffe4a00000000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000000053feffffffffffffd45201000000000000000000000254cdfffffffff53000000000000000000000000082ffffffffffffdf5d0200000000000000000000045ed8fffffffff831000006d8ffee8b0200000000000000000000000000000000000000000000000000000000000000004796d1ebfcff140000acffffff2000000000000000000000043c83c1daeff9e6d1ab651d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c00000000000000000000002cffffffe418000000000000000021eefffffc1b00000000000000000000000000139ffefffffffffffffffff6760400bfffffff880000e5ffffffea000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcfffffffd4e00000000000000000000009fffffffffe203000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000070ffffff7000000038ffffffff740042fcffffffff830000000000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000001df0fffffffffffd77020000000000000000000000000000037dfcfff7430000000000000000000000005dffffffffffff8b0600000000000000000000000000000795fffffc510000000044ffffff780000000000000000000000000000000000000000000000000000000000002bcbffffffffffff14000000000000000000000000000000025edefffffffffffffffffffffeaa27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000083ffffff5d0000000000000000000071ffffff6f000000000000000000000000000000237dbee6f8f4dbbb6c160000005af7ffff880000f3fffffffffffffffffffffffffffffffffffffffffffff853000000005a992f000000000000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000fe7ffffffff51000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd71200000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000088ffffff8700000038ffffffff701ae8ffffffffbc020000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000b3fffffffffff34b00000000000000000000000000000000000039a9410000000000000000000000001ff1fffffffffb6400000000000000000000000000000000000054c957000000000000abfffff6200000000000000000000000000000000000000000000000000000000041f4ffffffffffffff0f00000000000000000000000000001bcafffffffffffffffffffffffffffffc7a000000000000000000000000000bedfffffa9e00000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000bdfffff5080000000000000000000013fcffffa80000000000000000000000000000000000000000000000000000000000000000000000e4ffffffffffffffffffffffffffffffffffffffffffffff9100000054fffff6570000000000a4ffffffff4000000000000000000000fcffffffe8000000000000000000000000007bffffffffb7000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe0200000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000009dffffff9d00000038ffffffff6cc3ffffffffe415000000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000040fffffffffffe5000000000000000000000000000000000000000000000000000000000000000000000c0ffffffffff6d000000000000000000000000000000000000000000000000000000001cf4ffffb10000000000000000000000000000000000000000000000000000001aecffffffffffe3cd8f00000000000000000000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa00300000000000000000000000082ffffffff4f000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000d7ffffd1000000000000000000000000e0ffffc10000000000000000000000000000000000000000000000000000000000000000000000cfffffffffffffffffffffffffffffffffffffffffffffff8a000022f0ffffffff8201000000a4ffffffff4000000000000000000000fcffffffe8000000000000000000000000001efffffffff4040000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000afffffffae00000038ffffffffdafffffffffa3a00000000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000baffffffffff860000000000000000000000000000000000000000000000000000000000000000000044ffffffffffaa00000000000000000000000000000000000000000000000000000000000076ffffff4c000000000000000000000000000000000000000000000000000094ffffffffbb2a0000000000000000000000000000000014e3fffffffffc9839020000001059d0ffffffffff8600000000000000000000000015f6ffffffbf000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000d6ffffce000000000000000000000000dbffffc2000000000000000000000000003078bad8effae7d2b374310100000000000000000000aeffffffff260000000000000000000000000000daffffff76000013c2ffffffffffab0a0000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000000dfffffffff330000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a00000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000bdffffffbc00000038ffffffffffffffffff700000000000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000026feffffffffe10600000000000000000000000000000000000000000000000000000000000000000000b6fffffffff21200000000000000000000000000000000000000000000000000000000000005d6ffffdd0800000000000000000000000000000000000000000000000004f3ffffffc3040000000000000000000000000000000000b8ffffffffe93500000000000000000387fffffffffe4700000000000000000000000095ffffffff2f0000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000bdffffef03000000000000000000000af8ffffa9000000000000000000000047caffffffffffffffffffffffe37c0d00000000000000006effffffff5f0000000000000000000000000001f1ffffff5e00000006a3ffffffffffcc1b00a1ffffffff4000000000000000000000fcffffffe80000000000000000000000000000afffffffff620000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000c8ffffffc800000038ffffffffffffffffab000000000000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000007cffffffffff66000000000000000000000000000000000000000000000000000000000000000000002afeffffffff87000000000000000000000000000000000000000000000000000000000000000041ffffff8000000000000000000000000000000000000000000000000038ffffffff3e00000000000000000000000000000000004bfffffffff52b000000000000000000000094ffffffffd401000000000000000000000021fcffffff9d0000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000083ffffff48000000000000000000005cffffff6f0000000000000000000badffffffffffffffffffffffffffffffe954000000000000002affffffffb8000000000000000000000000002effffffff2100000000007fffffffffffe5359affffffff4000000000000000000000fcffffffe8000000000000000000000000000095ffffffff760000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b0460000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ceffffffcd00000038ffffffffffffffd90d000000000000000000000000000000000000f0ffffffbc0000000a93eff29f1200000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000c9ffffffffe9050000000000000000000000000000000000000000000000000000000000000000000086fffffffff815000000000000000000000000000000000000000000000000000000000000000000a8fffff722000000000000000000000000000000000000000000000058fffffff5030000000000000000000000000000000000c4ffffffff750000000000000000000000000be3ffffffff4d000000000000000000000000a7fffffff71500000000000000000000000000000000000000000038ffffffffff1c000000000000000000000029ffffffd00800000000000000000eddfffffb1b00000000000000001bd0fffffffffffffce5d2d7ecffffffffffffff8100000000000000c4fffffffe3500000000000000000000000090ffffffdb000000000000005bf8fffffffff6d2ffffffff4000000000000000000000fcffffffe8000000000000000000000000000086ffffffff880000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000155792bcddf0faf9eedab88b500f00000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d2ffffffd200000038fffffffffffff52c00000000000000000000000000000000000000f0ffffffbc000000b7ffffffffce05000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000008faffffffff980000000000000000000000000000000000000000000000000000000000000000000000d0ffffffffb2000000000000000000000000000000000000000000000000000000000000000000001af2ffffb4000000000000000000000000000000000000000000000067ffffffe000000000000000000000000000000000002bfffffffff1090000000000000000000000000076ffffffffb200000000000000000000000030ffffffff7b00000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000afffffffaf090000000000000dbbffffff9c000000000000000005c8ffffffffffc55410000000001e69ccffffffffe90f0000000000004bffffffffd10d000000000000000000002cf6ffffff7a00000000000000003cecffffffffffffffffff4000000000000000000000fcffffffe8000000000000000000000000000080ffffffff8d0000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000038ffffffffffff5d0000000000000000000000000000000000000000f0ffffffbc000043ffffffffffff62000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000035ffffffffff58000000000000000000000000000000000000000000000000000000000000000000000bfdffffffff6c000000000000000000000000000000000000000000000000000000000000000000000073ffffff4f0000000000000000000000000000000000000000000058ffffffe900000000000000000000000000000000006dffffffff9e00000000000000000000000000001bfffffffff103000000000000000000000000baffffffe505000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000005fffffffffd7540700000a5bdcffffffff31000000000000000090fffffffffa620000000000000000000043cefffb3f0000000000000000b6ffffffffc218000000000000000029dfffffffed0d00000000000000000024d9ffffffffffffffff4000000000000000000000fcffffffe800000000000000000000000000008dffffffff7e0000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000038ffffffffff99000000000000000000000000000000000000000000f0ffffffbc000066ffffffffffff88000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000057ffffffffff270000000000000000000000000000000000000000000000000000000000000000000039ffffffffff37000000000000000000000000000000000000000000000000000000000000000000000004d4ffffdf0900000000000000000000000000000000000000000043fffffffa0000000000000000000000000000000000adffffffff64000000000000000000000000000000dfffffffff3500000000000000000000000043ffffffff59000000000000000000000000000000000000000038ffffffffff1c00000000000000000000003af4fffffffffffff5d7daf8ffffffffffffd81500000000000024fcfffffffe4e000000000000000000000000024e3800000000000000000014e3ffffffffec7f27000000002686f4ffffffff5d000000000000000000000012c0ffffffffffffff4000000000000000000000fcffffffe800000000000000000000000000009bffffffff6f0000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000038ffffffffcc07000000000000000000000000000000000000000000f0ffffffbc00003fffffffffffff5e000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000073fffffffffe07000000000000000000000000000000000000000000000000000000000000000000005affffffffff130000000000000000000000000000000000000000000000000000000000000000000000003fffffff8300000000000000000000000000000000000000000026ffffffff0e00000000000000000000000000000000d4ffffffff36000000000000000000000000000000b0ffffffff5b00000000000000000000000000ccffffffc9000000000000000000000000000000000000000038ffffffffff1c000000000000000000002fefffffffffffffffffffffffffffffffffffffce0f00000000009cffffffff9200000000000000000000000000000000000000000000000000002de3ffffffffffffefd8d4ebffffffffffff8d0000000000000000000000000006a1ffffffffffff4000000000000000000000fcffffffe80000000000000000000000000000c1ffffffff580000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003effff91000000001679cef8f2bb3f00000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000038fffffdce1d00000000000000000000000000000000000000000000f0ffffffbc000000b3ffffffffcc04000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000007ffffffffff5000000000000000000000000000000000000000000000000000000000000000000000074fffffffffa0000000000000000000000000000000000000000000000000000000000000000000000000000a4fffff824000000000000000000000000000000000000000003f7ffffff3700000000000000000000000000000000e8ffffffff200000000000000000000000000000009affffffff6f0000000000000000000000000056ffffffff38000000000000000000000000000000000000000000000000000000000000000000000025e9ffffffd24fd8ffffffffffffffffcb64f4ffffffc3090000000ef9fffffff6140000000000000000000000000000000000000000000000000000001bcafffffffffffffffffffffffffffd78000000000000000000000000000000007cfeffffffff4000000000000000000000fcffffffe80000000000000000000000000001eeffffffff260000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017fffff04008359ff9fffffffffffc4f000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd40000000000000000000000000000000000000000000000000000000000000000000000000000000a8fedf19c1100000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000085ffffffffee000000000000000000000000000000000000000000000000000000000000000000000080fffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000018f1ffffb7000000000000000000000000000000000000000000cdffffff6300000000000000000000000000000000faffffffff120000000000000000000000000000008bffffffff82000000000000000000000000005effffffffa7000000000000000000000000000000000000000000000000000000000000000000001be1ffffffd616000351a5def6f4da9e4501003ef5ffffffb60400004bffffffff9f0000000000000000000000000000000000000000000000000000000000025ee1ffffffffffffffffffffbe3a00000000000000000000000000000000000059f8ffffff4000000000000000000000fcffffffe9000000000000000000000000003bfffffffff0010000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000beffffffffffffffffffffffffffe7060000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000007dfffffffff5000000000000000000000000000000000000000000000000000000000000000000000085fffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffff5200000000000000000000000000000000000000009fffffff8e00000000000000000000000000000000f9ffffffff130000000000000000000000000000008cffffffff8100000000000000000000000000cefffffffffb1b00000000000000000000000000000000000000000000000000000000000000000009bcffffd919000000000000000000000000000041f5ffff9d0100008cffffffff5900000000000000000000000000000000000000000000000000000000000000044b94c9eaf9f5dfc27f33000000000000000000000000000000000000000000000000000000000000000000000000fcffffffff6f0000000000000000000000009affffffffac000000fcffffffe800000000000000000000000000b5ffffffff32000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028edfffffffffffffff5d6e3ffffff410000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc0000000070ffffffffff09000000000000000000000000000000000000000000000000000000000000000000007cfffffffffa00000000000000000000000000000000000000000000000000000000000000000000000000000003d1ffffe10a0000000000000000000000000000000000000070ffffffba00000000000000000000000000000000e7ffffffff210000000000000000000000000000009affffffff6e00000000000000000000000040ffffffffffff85000000000000000000000000002bbff3ca410000000000000059d7f1af1c0000000009b9dd1c0000000000000000000000000000000042f6a302000000beffffffff1e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcfffffffffd54000000000000000000002cfcffffffff4c000000fcffffffe800000000000000000000000000c2ffffffff23000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022a3e9f8e1b97a370300007fffff660000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd40000000000000000000000003effff91000000001679cef8f2bb3f000000000000000000000000091d0000000000000038ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc0000000053ffffffffff2a000000000000000000000000000000000000000000000000000000000000000000006fffffffffff150000000000000000000000000000000000000000000000000000000000000000000000000000003cfeffff860000000000000000000000000000000000000044ffffffe400000000000000000000000000000000d3ffffffff38000000000000000000000000000000b2ffffffff5a000000000000000000000000b0ffffffffffffeb08000000000000000000000010e5fffffff729000000000044ffffffffd20500000000081b000000000000000000000000000000000000300300000000d2fffffffd0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003078bad8effae7d2b374310100000000000000fcfffffffffffd7d01000000000000001cdeffffffffdf04000000fcffffffe800000000000000000000000000e1ffffffff10000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000000000000000000000017fffff04008359ff9fffffffffffc4f0000000000000000000000bae72e00000000000038ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc000000002effffffffff5d0000000000000000000000000000000000000000000000000000000000000000000051ffffffffff3b00000000000000000000000000000000000000000000000000000000000000000000000000000000a1fffff9260000000000000000000000000000000000002bfffffffc01000000000000000000000000000000aaffffffff66000000000000000000000000000000e1ffffffff32000000000000000000000023fdffffffffffffff63000000000000000000000056ffffffffff820000000000a0ffffffffff3a000000000000000000000000000000000000000000000000000000000000e5ffffffea0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047caffffffffffffffffffffffe37c0d0000000000fcffffffb6dcffffc650080000001870eeffffffffff4b00000000fcfffffff72e00000000000000000000001fffffffffe300000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000000000000000000000000beffffffffffffffffffffffffffe70600000000000000000003e6ffe822000000000038ffffffffffd3ccccccccccccccccccccccccccccccccccccccccecffffffffbc0000000003f3ffffffffa0000000000000000000000000000000000000000000000000000000000000000000002cffffffffff710000000000000000000000000000000000000000000000000000000000000000000000000000000016efffffba00000000000000000000000000000000000014ffffffff100000000000000000000000000000006affffffffa200000000000000000000000000001dffffffffef02000000000000000000000092ffffffffc7ffffffd2000000000000000000000052ffffffffff7d00000000009cffffffffff35000000000000000000000000000000000000000000000000000000000000f3fffffffffffffffffffffffffffffffffffffffffffff85300000000000000000000000000000000003eddffffaa00000000000000000000000000000badffffffffffffffffffffffffffffffe95400000000fcffffff811ee1fffffffbdbd1e5feffffffffffff9f0000000000fcffffffffed350000000000000000000089ffffffffa800000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000004b9f4750000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd40000000000000000000000000028edfffffffffffffff5d6e3ffffff410000000000000000000034f6ffcf080000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000b9ffffffffef0a00000000000000000000000000000000000000000000000000000000000000000002f1ffffffffbb00000000000000000000000000000000000000000000000000000000000000000000000000000000006dffffff55000000000000000000000000000000000011ffffffff1a00000000000000000000000000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000000000000000ff3ffffffec40ffffffff41000000000000000000000de1fffffff52400000000003dfeffffffcb03000000000000000000003078bad8effae7d2b37431010000000000000000e4ffffffffffffffffffffffffffffffffffffffffffffff910000000000000000000000000000000034f4fffff31b000000000000000000000000001bd0fffffffffffffce5d2d7ecffffffffffffff81000000fcffffff65001cbfffffffffffffffffffffffffa9030000000000fcfffffffffff77101000000000000003efaffffffff4e00000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000048ffffee0000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd4000000000000000000000000000022a3e9f8e1b97a370300007fffff66000000000000000000000067ffff840000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000066ffffffffff7600000000000000000000000000000000000000000000000000000000000000000000b5fffffffffb1e0000000000000000000000000000000000000000000000000000000000000000000000000000000003ceffffe30b000000000000000000000000000000003bfffffff60500000000000000000000000000000000bfffffffff780000000000000000000000000de5ffffffff47000000000000000000000074ffffffff9701ddffffffb0000000000000000000000026baf1c63b0000000000000053d3efab1800000000000000000047caffffffffffffffffffffffe37c0d000000000000cfffffffffffffffffffffffffffffffffffffffffffffff8a00000000000000000000000000000023e9ffffff730000000000000000000000000005c8ffffffffffc55410000000001e69ccffffffffe90f0000fcffffff4800000278f3ffffffffffffffffef6902000000000000fcfffffffdffffffca570c000000177bf6ffffffffdb0200000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000072ffffff1100000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd40000000000000000000000000000000000000000000000000000000000000000000000000000000000c5fff81b00000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000012f6ffffffffec0d00000000000000000000000000000000000000000000000000000000000000000062ffffffffff97000000000000000000000000000000000000000000000000000000000000000000000000000000000039feffff8900000000000000000000000000000000b3ffffffa7000000000000000000000000000000000046fffffffff62d000000000000000000000098ffffffffcf000000000000000000000003e1ffffffff2d0076fffffffd22000000000000000000000000000000000000000000000000000000000000000000000badffffffffffffffffffffffffffffffe9540000000000aeffffffff260000000000000000000000000000daffffff76000000000000000000000000000015dbffffffd3040000000000000000000000000090fffffffffa620000000000000000000043cefffb3f000000fcffffd10b00000000136cb5e2f7f4dab462110000000000000000fcffffffe867fcfffffffcddd0e2fefffffffffffd3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000008dffffff2c00000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd4000000000000000000000000000000000000000000000000000000000000000000000000000000000043ffff8700000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000096ffffffffffa100000000000000000000000000000000000000000000000000000000000000000010f3fffffffff91d00000000000000000000000000000000000000000000000000000000000000000000000000000000009efffffa29000000000000000000000000001c99ffffffe81d000000000000000000000000000000000000b3ffffffffea370000000000000000048afffffffffd42000000000000000000000056ffffffffbf000013f7ffffff8e0000000000000000000000000000000000000000000000000000000000000000001bd0fffffffffffffce5d2d7ecffffffffffffff81000000006effffffff5f0000000000000000000000000001f1ffffff5e000000000000000000000000000bcafffffffe3d0000000000000000000000000024fcfffffffe4e000000000000000000000000024e3800000000000000000000000000000000000000000000000000000000000000fcffffffe8004eecfffffffffffffffffffffffe6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000a8ffffff4700000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd4000000000000000000000000002872abd2eefafbf1d9b47e380000000000000000000000000000000003eaffe100000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000001df5ffffffffff7000000000000000000000000000000000000000000000000000000000000000000090ffffffffffc1040000000000000000000000000000000000000000000000000000000000000000000000000000000015eeffffbd000000000000000000000000c2ffffffffd5220000000000000000000000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff80000000000000000000000000c7ffffffff52000000a1fffffff10c00000000000000001d78a6d1e5f5f9e5cfa25a12000000000000000000000005c8ffffffffffc55410000000001e69ccffffffffe90f0000002affffffffb8000000000000000000000000002effffffff2100000000000000000000000004b5ffffffffa000000000000000000000000000009cffffffff920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffffe8000014a2feffffffffffffffffe14f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000c2ffffff6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048c9ffffffffffffffffffffffffdc610300000000000000000000001dafefffffff22000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000007bfffffffffffc73000000000000000000000000000000000000032b05000000000000000000000019f3ffffffffff8e00000000000000000000000000000000000000000000000000000000000000000000000000000000006affffff580000000000000000000000ccffffff8b020000000000000000000000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff9802000000000000000000000037ffffffffe00300000037ffffffff6c000000000000000046fffffffffffffffffffff6880f00000000000000000090fffffffffa620000000000000000000043cefffb3f0000000000c4fffffffe3500000000000000000000000090ffffffdb000000000000000000000000009dffffffffee16000000000000000000000000000ef9fffffff6140000000000000000000000000000000000000000d0ffffffff1c00000000000000000000000fb2f8ffffff8a000000fcffffffe8000000002783c3eafaf1dbab5e0800000000000000000024e2fffff7b8250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff6f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc1ffffffffffffffffffffffffffffffffd74600000000000000000004d1ffffffffff49000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000000004c4ffffffffffffa60f0000000000000000000000000000003dd5ffb502000000000000000000000076ffffffffffff8f0300000000000000000000000000000000000b460d0000000000000000000000000000000000000002ccffffe50d00000000000000000000ccffffffffc01500000000000000000000000000000000000000000016c3fffffffffffffffffffffffffffffa7100000000000000000000000000a8ffffffff760000000000ccffffffda01000000000000002cffffffffffffffffffffffffe7330000000000000024fcfffffffe4e000000000000000000000000024e380000000000004bffffffffd10d000000000000000000002cf6ffffff7a00000000000000000000000082fffffffee14700000000000000000000000000004bffffffff9f000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000004beffffffffbb03000000fcffffffe800000000000000000000000000000000000000000000000020ddfffffff35c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff700000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000004ef2fffffffffffffffffffffffffffffffffffffd75000000000000000033ffffffffffff4c000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000001be2ffffffffffffef7f0f000000000000000000000029a7ffffffff7f000000000000000000000003c1ffffffffffffb8190000000000000000000000000000004ee4ffc5040000000000000000000000000000000000000036feffff8c000000000000000000000530aeffffffda120000000000000000000000000000000000000000000155d8fffffffffffffffffffffda121000000000000000000000000001dfbfffffff612000000000062ffffffff4b000000000000000bf7fffffffffffffffffffffffff4430000000000009cffffffff920000000000000000000000000000000000000000000000b6ffffffffc218000000000000000029dfffffffed0d0000000000000000000000000000000000000000000000000000000000000000008cffffffff59000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000095ffffffffdf1300000000fcffffffe8000000000000000000000000000000000000000000000000001bd9ffffffff9f0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff70000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f000000000000000038ffffffffff1c00000000000068feffffffffffffffffffffffffffffffffffffffffff96000000000000003bffffffffffff24000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000029e8fffffffffffffff5ac6b381808030c24497fc8fffffffffffffd25000000000000000000000019e0fffffffffffff68b14000000000000000000000033b4ffffffff8900000000000000000000000000000000000000009bfffffb2b000000000000000000000001c3ffffff93000000000000000000000000000000000000000000000001357ebed8eef9e5cfa85f170000000000000000000000000000008affffffff9b00000000000009eeffffffba000000000000000048703d1103102d6fd8ffffffffffea18000000000ef9fffffff614000000000000000000000000000000000000000000000014e3ffffffffec7f27000000002686f4ffffffff5d00000000000000000000000000000000000000000000000000000000000000000000beffffffff1e000000000000000000000000000000000000000000d0ffffffff1c00000000000000000066fffffffff6310000000000fcffffffe8000000000000000000000000000000000000000000000000000017d3ffffffffd72e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff7000000000000000000000000db5ffffffe64800000067f4ffffff920300000000000000000038ffffffffff1c00000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff6900000000000007d8ffffffffb000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000000000000021d7fffffffffffffffffffffffffffffffffffffffffffffffd6c0000000000000000000000000027e6fffffffffffffff8b16d3a1808030c244a83cffffffffffffffe250000000000000000000000000000000000000013edffffc000000000000000000000000047ffffffed010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000befffffffff2e000000000000008dffffffff2a0000000000000000000000000000000383ffffffffffb1000000004bffffffff9f000000000000000000000000000000000000000000000000002de3ffffffffffffefd8d4ebffffffffffff8d000000000038ffffffffffffffffffffffffffffffffffffffffffff2c000000000000d2fffffffd03000000000000000000000000000000000000000000d0ffffffff1c00000000000000003efaffffffff5c000000000000fcffffffe800000000000000000000000000000000000000000000000000000013cefffffffff76a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff70000000000000000000000000028effffffff9724b4fffffffb69000000000000000000000038ffffffffff1c0000000018e8fffffffffff4780900000000000000000159e2fffffffffff9360000000000001eaaebef960a00000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000000000b9cffffffffffffffffffffffffffffffffffffffffffea440000000000000000000000000000001ed4fffffffffffffffffffffffffffffffffffffffffffffffc6800000000000000000000000000000000000000000066ffffff5b000000000000000000000019ffffffff160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006cffffffffc0000000000000000024feffffff98000000000000000000000000000000000089ffffffffff2c0000008cffffffff5900000000000000000000000000000000000000000000000000001bcafffffffffffffffffffffffffffd7800000000000038ffffffffffffffffffffffffffffffffffffffffffff2c000000000000e5ffffffea00000000000000000000000000000000000000000000d0ffffffff1c000000000000001feaffffffff9000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff70000000000000000000000000000066fbffffffffffffffef4400000000000000000000000038ffffffffff1c0000000095ffffffffffe53100000000000000000000000017caffffffffffc100000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000000000000000003cc9fffffffffffffffffffffffffffffffffffea01400000000000000000000000000000000000a98ffffffffffffffffffffffffffffffffffffffffffe8420000000000000000000000000000000000000000000002c9ffffe70e000000000000000000000effffffff16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002dbffffffff53000000000000000000b9fffffff5120000000000000000000000000000000007ddffffffff98000000beffffffff1e000000000000000000000000000000000000000000000000000000025ee1ffffffffffffffffffffbe3a0000000000000038ffffffffffffffffffffffffffffffffffffffffffff2c000000000000f3fffffffffffffffffffffffffffffffffffffffffffff8530000d0ffffffff1c0000000000000bd1ffffffffc00400000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000065c7d808080805f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff7000000000000000000000000000000042eeffffffffffdb280000000000000000000000000038ffffffffff1c0000001cf8fffffffff42800000000000000000000000000000edcffffffffff40000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000000000000000000000003fa9f5fffffffffffffffffffffffff7a52d00000000000000000000000000000000000000000039c6fffffffffffffffffffffffffffffffffffd9e1200000000000000000000000000000000000000000000000033fdffff8f0000000000000000000024ffffffff0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004effffffffe2030000000000000000004effffffff76000000000000000000000000000000000079ffffffffe9000000d2fffffffd030000000000000000000000000000000000000000000000000000000000044b94c9eaf9f5dfc27f3300000000000000000038ffffffffffffffffffffffffffffffffffffffffffff2c000000000000e4ffffffffffffffffffffffffffffffffffffffffffffff910000d0ffffffff1c000000000001adffffffffe3160000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff700000000000000000000000000000000025808080807c13000000000000000000000000000038ffffffffff1c0000008bffffffffff620000000000000000000000000000000034fdffffffffb7000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000000000000000000000a4984b2d3ecf7fcf1e1bf955510000000000000000000000000000000000000000000000000003ba6f3fffffffffffffffffffffffff7a42c00000000000000000000000000000000000000000000000000000098fffffb2d0000000000000000003afffffff1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000beffffffff780000000000000000000002e0ffffffe2030000000000000000000000000000000027ffffffffff230000e5ffffffea000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000000000000000000000cfffffffffffffffffffffffffffffffffffffffffffffff8a0000d0ffffffff1c000000000081fffffffff835000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000e0ffffffffda020000000000000000000000000000000000aefffffffffb120000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094782b2d3ecf7fcf1e1bf955510000000000000000000000000000000000000000000000000000000000011ebffffc200000000000000000060ffffffcd00000000000000000000000000000000000000000077ffff9f00000000117cd6f9e7991800000000000000000000002ffffffffff713000000000000000000000079ffffffff540000000000000000000000000000000001f2ffffffff5a0000f3fffffffffffffffffffffffffffffffffffffffffffff85300000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000000000000000000000aeffffffff260000000000000000000000000000daffffff760000d0ffffffff1c0000000054feffffffff6200000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000023ffffffffff6d0000000000000000000000000000000000003effffffffff500000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063ffffff5e00000000000000008dffffffa40000000000000000000000000000000000000000005bffffed20000c7cf2ffffffffffe31e00000000000000000000a0ffffffff9d00000000000000000000000015f9ffffffc30000000000000000000000000000000000cfffffffff750000e4ffffffffffffffffffffffffffffffffffffffffffffff9100000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000000000000000006effffffff5f0000000000000000000000000001f1ffffff5e0000d0ffffffff1c00000030f5ffffffff970000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000000000000000000000002872abd2eefafbf1d9b47e38000000000000000000000000000000000000000038ffffffffff1c000056ffffffffff2600000000000000000000000000000000000004f3ffffffff850000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000038ffffffff740000000000000000000000000000000000000000000063e3ffffbc0000acffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c7ffffe80f00000000000000b9ffffff7a0000000000000000000000000000000000000000001efefffff9d6f4ffffffffffffffffb700000000000000000018f9ffffffff2f00000000000000000000000000a5ffffffff3300000000000000000000000000000000c1ffffffff860000cfffffffffffffffffffffffffffffffffffffffffffffff8a000000000000000000000000004ffffff59c06000000000000000000000038ffffffffff2000000000000000000000000000000000000000000000002affffffffb8000000000000000000000000002effffffff210000d0ffffffff1c000016e1ffffffffc5050000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000000000000000000048c9ffffffffffffffffffffffffdc6103000000000000000000000000000000000038ffffffffff1c000079ffffffffe90000000000000000000000000000000000000000bdffffffffa700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff7400000000000000000000000000000000000000000047fdffffffbc0000acffffff200000097c7e5f1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031fcffff9200000000000000e6ffffff5000000000000000000000000000000000000000000000adfffffffffffffffff5d5f6ffffff25000000000000000082ffffffffc200000000000000000000000000003affffffffa100000000000000000000000000000000b5ffffffff970000aeffffffff260000000000000000000000000000daffffff760000000000000000000000000000b5ffffffa5010000000000000000000038ffffffffff20000000000000000000000000000000000000000000000000c4fffffffe3500000000000000000000000090ffffffdb000000d0ffffffff1c0224c8ffffffffe619000000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000000000000000002bc1ffffffffffffffffffffffffffffffffd7460000000000000000000000000000000038ffffffffff1c00008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff7400000000000000000000000000000000000000001debffffffffbc0000acffffff200000007cffffed3d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008cfffffc2f000000000011ffffffff270000000000000000000000000000000000000000000018dbfffffffffff4820f0017dfffff630000000000000008eaffffffff54000000000000000000000000000000cffffffff917000000000000000000000000000000b4ffffffff9c00006effffffff5f0000000000000000000000000001f1ffffff5e000000000000000000000000000023f8ffffff8a0000000000000000000038ffffffffff200000000000000000000000000000000000000000000000004bffffffffd10d000000000000000000002cf6ffffff7a000000d0fffffffffffffffffffffffa3b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000000000000004ef2fffffffffffffffffffffffffffffffffffffd7500000000000000000000000000000038ffffffffff1c000096ffffffffbb00000000000000000000000000000000000000008fffffffffc500000000000000000000000000000000000000000000002872abd2eefafbf1d9b47e380000000000000000000000000038ffffffff740000000000000000000000000000000000000006c8ffffffffffbc0000acffffff2000000001b9ffffee2100003384bae2f4fae7d2ae6a2200000000000000000000000000000000000000000000000000000000000000000000000000000000048cefffc5010000000036ffffffff060000000000000000000000000000000000000000000000128ee2f9db83130000000085ffff7e0000000000000064fffffffdad020000000000000000000000000000003becffffff7f000000000000000000000000000000b4ffffffff9c00002affffffffb8000000000000000000000000002effffffff2100000000000000000000000000000082ffffffff6d00000000000000000038ffffffffff2000000000000000000000000000000000000000000000000000b6ffffffffc218000000000000000029dfffffffed0d000000d0ffffffffffffffffffffff68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000000000000068feffffffffffffffffffffffffffffffffffffffffff96000000000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000000000000000000000000000048c9ffffffffffffffffffffffffdc61030000000000000000000038ffffffff740000000000000000000000000000000000000093ffffffffffffbc0000acffffff200000000015e5ffffce50cfffffffffffffffffffffffb4310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cfffffff50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4ffffffff9c000000c4fffffffe3500000000000000000000000090ffffffdb0000000000000000000000000000000009dffffffffd53000000000000000038ffffffffff200000000000000000000000000000000000000000000000000014e3ffffffffec7f27000000002686f4ffffffff5d00000000d0ffffffffffffffffffffb701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff690000000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000000000002bc1ffffffffffffffffffffffffffffffffd74600000000000000000038ffffffff7400000000000000000000000000000000000057ffffffffffffffbc0000acffffff2000000000003dfcfffffffffffffffffffffffffffffffffe8d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fffffffe50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4ffffffff9c0000004bffffffffd10d000000000000000000002cf6ffffff7a00000000000000000000000000000000004ffffffffff73c0000000000000038ffffffffff2000000000000000000000000000000000000000000000000000002de3ffffffffffffefd8d4ebffffffffffff8d0000000000d0ffffffffd1d3f9ffffffff9d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000000018e8fffffffffff4780900000000000000000159e2fffffffffff93600000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000000000000004ef2fffffffffffffffffffffffffffffffffffffd75000000000000000038ffffffff74000000000000000000000000000000000028f3ffffffffffffffbc0000acffffff2000000000000081fffffffffffffff2d7d1e6fcffffffffffffb6090000000000000000000000000000000000b0ffdf1f00000000000000000000000000000000000000000000000065ffffffe20000000000000000001ac4fafff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff3400000040fffffffffffffffffffff4000000000000000000000000000000b4ffffffff9c00000000b6ffffffffc218000000000000000029dfffffffed0d000000000000000000000000000000000000b3ffffffffee2900000000000038ffffffffff200000000000000000000000000000000000000000000000000000001bcafffffffffffffffffffffffffffd78000000000000d0ffffffff1c0023dfffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000000095ffffffffffe53100000000000000000000000017caffffffffffc100000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000000068feffffffffffffffffffffffffffffffffffffffffff960000000000000038ffffffff74000000000000000000000000000000000bd5ffffffffffffffffbc0000acffffff20000000000006c8fffffffff3862b010000000f58caffffffffffa00000000000000000000000000000000000a1ffff7200000000000000000000000000000000000000000000000052fffffff907000000000000000089fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff3400000040fffffffffffffffffffff4000000000000000000000000000000b4ffffffff9c0000000014e3ffffffffec7f27000000002686f4ffffffff5d0000000000000000000000000000000000000017c2fbffffffe019000000000038ffffffffff2000000000000000000000000000000000000000000000000000000000025ee1ffffffffffffffffffffbe3a00000000000000d0ffffffff1c000024e8ffffffff7600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000001cf8fffffffff42800000000000000000000000000000edcffffffffff40000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff6900000000000038ffffffff7400000000000000000000000000000000a5fffffffff4ebffffffbc0000acffffff20000000000097ffffffffffcf0800000000000000016ffdffffffff610000000000000000000000000000000092ffff870000000000000000000000000000000000000000000000002affffffff4b0000000000000000a3fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000a28282853ffffff79282826000000000000000000000000000000b4ffffffff9c00000000002de3ffffffffffffefd8d4ebffffffffffff8d00000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000000000000000000000000000000000000044b94c9eaf9f5dfc27f33000000000000000000d0ffffffff1c0000002eefffffffff63000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000008bffffffffff620000000000000000000000000000000034fdffffffffb7000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000016a6f3ee910b000000000018e8fffffffffff4780900000000000000000159e2fffffffffff936000000000038ffffffff740000000000000000000000000000006affffffffff59e2ffffffbc0000acffffff200000000030ffffffffffffff9f00000000000000000065ffffffffe60700000000000000000000000000000083ffff9600000000000000000000000000000000000000000000000000e8ffffffd10800000000000000a4fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000001bcafffffffffffffffffffffffffffd780000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0ffffffff1c000000003af5fffffffc520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000000e0ffffffffda020000000000000000000000000000000000aefffffffffb120000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000004ceffffffffb4000000000095ffffffffffe53100000000000000000000000017caffffffffffc1000000000038ffffffff74000000000000000000000000000035f9ffffffff9400edffffffbc0000acffffff2000000000aeffffffff86ffffff68000000000000000000afffffffff6800000000000000000000000000000074ffffa50000000000000000000000000000000000000000000000000081ffffffffc530000000000000a4fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c00000000000000025ee1ffffffffffffffffffffbe3a00000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0ffffffff1c000000000047f9fffffff84300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000023ffffffffff6d0000000000000000000000000000000000003effffffffff500000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000054ffffffffffff380000001cf8fffffffff42800000000000000000000000000000edcffffffffff400000000038ffffffff740000000000000000000000000012e1ffffffffc90600f0ffffffbc0000acffffff200000001bfeffffffb6008cfffff93800000000000000002dffffffffc700000000000000000000000000000065ffffb40000000000000000000000000000000000000000000000000011e1ffffffffffe5ce91000000a4fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c000000000000000000044b94c9eaf9f5dfc27f33000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000000000000002a82c8e6faf5dbab600a000000005ef7ffff8800000000000000d0ffffffff1c00000000000056fdfffffff335000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000056ffffffffff2600000000000000000000000000000000000004f3ffffffff850000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000076ffffffffffff590000008bffffffffff620000000000000000000000000000000034fdffffffffb70000000038ffffffff7400000000000000000000000001b6ffffffffec1e0000f0ffffffbc0000acffffff200000005fffffffff5e0003bfffffe4160000000000000000cbfffffffb0d00000000000000000000000000005cffffc3000000000000000000000000000000000000000000000000000033edffffffffffffff0f0000a4fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff20000000000000000000000000000000000000000000000d9bfdffffffffffffffffec64000000bfffffff8800000000000000d0ffffffff1c0000000000000066ffffffffec290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000079ffffffffe90000000000000000000000000000000000000000bdffffffffa70000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000051ffffffffffff35000000e0ffffffffda020000000000000000000000000000000000aefffffffffb1200000038ffffffff740000000000000000000000007dfffffffffd48000000f0ffffffbc0000acffffff20000000a2ffffffff1b000016e4ffffbf03000000000000008dffffffff49000000000000000000003583bfecfffffffff0d9bd792b0000000000000000000000000000000000000000000024c4ffffffffffff140000a4fffffff6000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000000015cdffffffffffffffffffffffffbc1800deffffff8800000000000000d0ffffffff1c000000000000000078ffffffffe31f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb0000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000003caffffffffaf00000023ffffffffff6d0000000000000000000000000000000000003effffffffff5000000038ffffffff74000000000000000000000044fdffffffff8100000000f0ffffffbc0000acffffff20000000cdffffffef0000000038f9ffff8b000000000000005bffffffff68000000000000000262d6ffffffffffffffffffffffffffc034000000000000000000000000000000000000000000004292d0e9fbff140000a4ffffffee000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff20000000000000000000000000000000000000000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff8800000000000000d0ffffffff1c00000000000000000089ffffffffd916000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000096ffffffffbb00000000000000000000000000000000000000008fffffffffc50000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000012a1f3ec8b0900000056ffffffffff2600000000000000000000000000000000000004f3ffffffff8500000038ffffffff74000000000000000000001beaffffffffba0200000000f0ffffffbc0000acffffff20000000e1ffffffd500000000006bffffff5500000000000045ffffffff7c0000000000003accfffffffffffffffffffffffffffffffffe8d030000000000000000000000000000000000000000000000000000000000a4ffffffe5000048a7ddf7f6d89c3f000000005ef7ffff880000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000005cffffffffffcb45040000002b8cefffffedffffffff8800000000000000d0ffffffff1c000000000000000000009affffffffce0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000079ffffffffe90000000000000000000000000000000000000000bdffffffffa700000038ffffffff7400000000000000000005c5ffffffffe3140000000000f0ffffffbc0000acffffff20000000f5ffffffc9000000000000a1fffff32a000000000035ffffffff8e00000000007bfeffffffffffffffffffffffffffffffffffffffb60700000000000000000000000000000000000000000000000000000000a4ffffffcd13b1ffffffffffffffffba1d0000bfffffff880000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000090fffff791020000000000059bf9ffff640000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000000ccffffffffbc080000000000000019b2ffffffffffff8800000000000000d0ffffffff1c000000000000000000000288f5ffffffc10800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb00000038ffffffff7400000000000000000090fffffffffa39000000000000f0ffffffbc0000acffffff20000000f7ffffffcc00000000000009d0ffffd80e0000000039ffffffff84000000019fffffffffffffe68a3d10fdffff27337bdbffffffffff9d0000000000000000000000002bbff8e4740200000000000000000000a4ffffffbdccffffffffffffffffffffeb3800deffffff880000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000002adffffffaa0600000009b5ffffff83000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000023fffffffff81b0000000000000000000083ffffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000026fddfadc700200000096ffffffffbb00000000000000000000000000000000000000008fffffffffc500000038ffffffff74000000000000000055ffffffffff6e00000000000000f0ffffffbc0000acffffff20000000e4ffffffdc0000000000000022eeffffaf0100000046ffffffff7000000000abfffffffff37408000000ecffff2f0000046ff9ffffffff5a0000000000000000000018eeffffffff8200000000000000000000a4fffffffffffffffff3d7d8f6fffffffff338f9ffffff880000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c000000000000000009c7ffffffb80a000dc0ffffffa200000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff20000000000000000000000000000000000000005affffffffa90000000000000000000000008dffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000009fffffffffffa500000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff740000000000000026f2ffffffffa90000000000000000f0ffffffbc0000acffffff20000000d1fffffff402000000000000004afeffff7800000068ffffffff590000000016ebffffbe1e0000000000daffff410000000043faffffffdd040000000000000000007dfffffffffff80b000000000000000000a4ffffffffffffc843040000002b8ceffffff0ffffffff880000fcffffffe800000000000000000000000000b4ffffffff34000001a9e7570034ffffff60000000000000000000000000000000000000b4ffffffff9c00000000000000000014dbffffffc421caffffffbd0500000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000083ffffffff6b0000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000044ffffffffffffff48000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff740000000000000ad3ffffffffd80c0000000000000000f0ffffffbc0000acffffff20000000aaffffffff2a000000000000000081fffffc44000097ffffffff21000000000038ad6f02000000000000c8ffff5300000000007bffffffff58000000000000000000a0ffffffffffff25000000000000000000a4ffffffffffb4060000000000000019b2ffffffffffff880000fcffffffe800000000000000000000000000b4ffffffff3400006bffffff8933ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000024ebfffffffaffffffd30f0000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000095ffffffff4d0000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800008bffffffffffffff92000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff74000000000000a2fffffffff42b000000000000000000f0ffffffbc0000acffffff2000000068ffffffff6c000000000000000002b6ffffeb1e00e0ffffffde00000000000000000000000000000000b6ffff6500000000000bf3ffffffa50000000000000000007cfffffffffff70a000000000000000000a4fffffffff3130000000000000000000083ffffffffff880000fcffffffe800000000000000000000000000b4ffffffff34000020d4ffffffccffffff60000000000000000000000000000000000000b4ffffffff9c000000000000000000000039f6ffffffffffe51d000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a2ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000089ffffffffffffff90000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff74000000000067ffffffffff5b00000000000000000000f0ffffffbc0000000000000000000025ffffffffcd00000000000000000011deffffcb4effffffff9000000000000000000000000000000000a3ffff77000000000000b3ffffffe800000000000000000015ebffffffff7d00000000000000000000a4ffffffff9d0000000000000000000000008dffffffff880000fcffffffe800000000000000000000000000b4ffffffff340000000db5ffffffffffff60000000000000000000000000000000000000b4ffffffff9c00000000000000000000000052fdfffffff23000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800003fffffffffffffff44000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff740000000033f8ffffffff960000000000000000000000f0ffffffbc0000000000000000000000bfffffffff5200000000000000000030f6fffff8fffffffb1f0000000000000000000000000000000091ffff8900000000000090ffffffff0700000000000000000026bbf8e26e0100000000000000000000a4ffffffff610000000000000000000000005cffffffff880000fcffffffe800000000000000000000000000b5ffffffff3200000000038fffffffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000098ffffffffff9e00000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff7400000011dfffffffffcb060000000000000000000000f0ffffffbc000000000000000000000045ffffffffe71f0000000000000000005fffffffffffff9d00000000000000000000000000000000007fffff9b00000000000088ffffffff1d00000000000000000000000000000000000000000000000000a4ffffffff480000000000000000000000005cffffffff880000fcffffffe800000000000000000000000000c2ffffffff2300000000000066fbffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061fffed6390000000000000bc5ffff8600000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000066d9f9d8670100000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff74000001b3ffffffffed1f000000000000000000000000f0ffffffbc000000000000000000000000b3ffffffffe13000000000000000000edcffffffffdd0f00000000000000000000000000000000006dffffad000000000000acffffffff1800000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffffe800000000000000000000000000e1ffffffff100000000000000042eeffff60000000000000000000000000000000000000b4ffffffff9c000000000000002a82c8e6faf5dbab600a000000005ef7ffff88000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002cffffffd10000000000004affffffba00000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff7400007afffffffffe4a00000000000000000000000000f0ffffffbc00000000000000000000000011dffffffffffc9b3f030000001669e0ffffffffff440000000000000000000000000000000000005affffbf000000000016f5fffffffb0200000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcfffffff72e00000000000000000000001fffffffffe300000000000000000000000000000000000000000000000000000000000000b4ffffffff9c00000000000d9bfdffffffffffffffffec64000000bfffffff88000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f4ffffff1500000000002bffffffee00000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff740042fcffffffff830000000000000000000000000000f0ffffffbc000000000000000000000000002ae0fffffffffffff7dfd2e4ffffffffffffffffa000000000000000000000000000000000000048ffffd10000000006b6ffffffffcc0000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffffffed350000000000000000000089ffffffffa8000000000000000000000000000000000000000000000000000000000000000000000000000000000015cdffffffffffffffffffffffffbc1800deffffff88000000fcffffffe800000000000000000000000000b5ffffffff320000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2ffffff4a000000000002f2ffffff23000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000016a6f3ee910b0000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff701ae8ffffffffbc020000000000000000000000000000f0ffffffbc000000000000000000000000000016c3fffffffffffffffffffffffffffffeffffff41000000000000000000000000000000000036ffffe300000022c3ffffffffff6b0000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcfffffffffff77101000000000000003efaffffffff4e00000018ffffffffffffffffffff080000000000000000000000000000000000000000000000000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff88000000fcffffffe800000000000000000000000000c2ffffffff230000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008dffffff7f000000000000beffffff57000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000004ceffffffffb40000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff6cc3ffffffffe415000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000155d8fffffffffffffffffffff79921daffffd9070000000000000000000000000000000023fffff5003a9dfaffffffffffd70a0000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffffe5ffffffca570c000000177bf6ffffffffdb0200000018ffffffffffffffffffff0800000000000000e4ffffffff080000000000000000000000005cffffffffffcb45040000002b8cefffffedffffffff88000000fcffffffe800000000000000000000000000e1ffffffff100000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058ffffffb400000000000088ffffff8c000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000000000000000000000000000000002bbff3ca410000000000000059d7f1af1c00000000000000000054ffffffffffff3800000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffdafffffffffa3a00000000000000000000000000000000f0ffffffbc0000acffffff200000000000000000000002367fbed8eefaebd4a1620f000042ffffff810000000000000000000000000000000011ffffffdaffffffffffffffef2f000000000000000000000000030404020000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffff8862fcfffffffcddd0e2fefffffffffffd3e0000000018fffffffffffffffffffa0200000000000000e4ffffffff08000000000000000000000000ccffffffffbc080000000000000019b2ffffffffffff88000000fcfffffff72e00000000000000000000001fffffffffe3000000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022ffffffe900000000000051ffffffc0000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000000000000000000000000010e5fffffff729000000000044ffffffffd205000000000000000076ffffffffffff5900000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffffffffffff700000000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000000000000000000000000000000000000a0fffff92900000000000000000000000000064da3ffffffffffffffffffffe02b00000000000000000000000000daffff9c0000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffff69004de9fffffffffffffffffffffffe6a000000000018ffffffffcdccccccc9700000000000000000e4ffffffff08000000000000000000000023fffffffff81b0000000000000000000083ffffffffff88000000fcffffffffed350000000000000000000089ffffffffa8000000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ecffffff1e00000000001afffffff3020000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c0000000000000000000056ffffffffff820000000000a0ffffffffff3a000000000000000051ffffffffffff3500000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffffffffffab000000000000000000000000000000000000f0ffffffbc0000acffffff200000000000000000000000000000000000000000000000000011dfffffc2010000000000000000000034a1f0fffffffffffffffffffff98e0c0000000000000000000000000000edffffbb0000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffff4a000014a5feffffffffffffffffe14f00000000000018ffffffff0800000000000000000000000000e4ffffffff0800000000000000000000005affffffffa90000000000000000000000008dffffffff88000000fcfffffffffff77101000000000000003efaffffffff4e00000000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b8ffffff53000000000000e4ffffff290000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c0000000000000000000052ffffffffff7d00000000009cffffffffff35000000000000000003caffffffffaf0000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffffffffd90d000000000000000000000000000000000000f0ffffffbc0000acffffff200000000000000000000000000000000000000000000000000000197180801d000000000000000021b7ffffffffffffffffffffffde821800000000000000000000000000000002fdffffdb0000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffd30d000000002782c2e9faf1dbab5e080000000000000018ffffffff0800000000000000000000000000e4ffffffff08000000000000000000000083ffffffff6b0000000000000000000000005cffffffff88000000fcffffffe5ffffffca570c000000177bf6ffffffffdb0200000000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083ffffff89000000000000adffffff5e0000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c000000000000000000000de1fffffff52400000000003dfeffffffcb0300000000000000000012a1f3ec8b090000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038fffffffffffff52c00000000000000000000000000000000000000f0ffffffbc0000acffffff20000000000000000000000000000000000000000000000000000000000000000000000000000052f4ffffffffffffffffffe0893400000000000000000000000000000000000014fffffff90100000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000018ffffffff0800000000000000000000000000e4ffffffff08000000000000000000000095ffffffff4d0000000000000000000000005cffffffff88000000fcffffff8862fcfffffffcddd0e2fefffffffffffd3e0000000000000000002a82c8e6faf5dbab600a000000005ef7ffff8800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004effffffbe00000000000077ffffff920000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c000000000000000000000026baf1c63b0000000000000053d3efab18000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffffff5d0000000000000000000000000000000000000000f0ffffffbc0000acffffff200000000000000000000000000000000000000000000000000000000000000000000000000051fbfffffffffffffffaffff62000000000000000000000000000000000000000020ffffffff3300000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a2ffffffff400000000000000000000000005cffffffff88000000fcffffff69004de9fffffffffffffffffffffffe6a00000000000000000d9bfdffffffffffffffffec64000000bfffffff8800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025bbccccccd5fffffff9ccccccccccccddfffffff0cccccccccccc3e00000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffff99000000000000000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000bedfffffa9e0000000000000000000000000000000000000000000018eefffffffffff59832a5ffff74000000000000000000000000000000000000000006f8ffffffc60a000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000002a82c8e6faf5dbab600a000000005ef7ffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000fcffffff4a000014a5feffffffffffffffffe14f000000000000000015cdffffffffffffffffffffffffbc1800deffffff8800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffff6e00000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffcc07000000000000000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000082ffffffff4f00000000000000000000000000000000000000000094ffffffffffb51c000094ffff860000000000000000000000000000000000000000008effffffffc71a0000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000d9bfdffffffffffffffffec64000000bfffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000fcffffd30d000000002782c2e9faf1dbab5e08000000000000000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff8800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006effffffffffffffffffffffffffffffffffffffffffffffffffff8500000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c00000000000000000000000000000000002475b0d9f3fdf7e9c89b580d0000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038fffffdce1d00000000000000000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000015f6ffffffbf000000000000000000000000000000000000000003eaffffffff9c0100000082ffff9800000000000000000000000000000000000000000005b7ffffffffe94a00000000000000a4ffffffff400000000000000000000000005cffffffff880000000015cdffffffffffffffffffffffffbc1800deffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000005cffffffffffcb45040000002b8cefffffedffffffff8800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004dffffffffffffffffffffffffffffffffffffffffffffffffffef40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000002cb3fffffffffffffffffffffff39114000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000acffffff200000000000000000000095ffffffff2f000000000000000000000000000000000000002effffffffd9060000000071ffffaa000000000000000000000000000000000000000000000591ffffffffff90040000000000a4ffffffff400000000000000000000000005cffffffff8800000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000ccffffffffbc080000000000000019b2ffffffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087ffffff80000000000000b3ffffff58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000493fdffffffffffffffffffffffffffffef580000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000acffffff200000000000000000000021fcffffff9d0000000000000000000000000000000000000047ffffffff7500000000005fffffbc0000000000000000000000000000000000000000000000004fefffffffffbc0a00000000a4ffffffff400000000000000000000000005cffffffff880000005cffffffffffcb45040000002b8cefffffedffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000023fffffffff81b0000000000000000000083ffffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056ffffffb200000000000082ffffff8a00000000000000000000000000000000000000034994c9ecfaf9e8c2883b000000000000000000000000000000000000000000000038ffffffffff1c00000000000000000000000011bdffffffffffffffefd7d2e4ffffffffffffff8800000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000002872abd2eefafbf1d9b47e380000000000000000000000000000acffffff200000000000000000000000a7fffffff71500000000000000000000000000000000000059ffffffff4800000000004dffffce0000000000000000000000000000000000000000000000000025d8ffffffffb702000000a4ffffffff400000000000000000000000005cffffffff88000000ccffffffffbc080000000000000019b2ffffffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000005affffffffa90000000000000000000000008dffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024ffffffe400000000000050ffffffbb00000000000000000000000000000000000369e3ffffffffffffffffffffd45400000000000000000000000000000000000000000038ffffffffff1c000000000000000000000006c8ffffffffffe9762500000000125dcdffffffffff87000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048c9ffffffffffffffffffffffffdc61030000000000000000000000acffffff20000000000000000000000030ffffffff7b00000000000000000000000000000000000048ffffffff4800000000003cffffe000000000000000000000000000000000000000000000000000000fc5ffffffff78000000a4ffffffff400000000000000000000000005cffffffff88000023fffffffff81b0000000000000000000083ffffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000083ffffffff6b0000000000000000000000005cffffffff88000000000000000000000000004ffffff59c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f1ffffff1600000000001effffffec000000000000000000000000000000001fc7ffffffffffffffffffffffffffffb1110000000000000000000000000000000000000038ffffffffff1c000000000000000000000096ffffffffff9d0d00000000000000000273fafffffff21800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc1ffffffffffffffffffffffffffffffffd74600000000000000000000acffffff20000000000000000000000000baffffffe505000000000000000000000000000000000026ffffffff7600000000002afffff100000000000000000000000000000000000000000000000000000012e2fffffff315000000000000000000000000000000000000000000000000000000005affffffffa90000000000000000000000008dffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000077ffff9f00000000117cd6f9e79918000000000000000095ffffffff4d0000000000000000000000005cffffffff880000000000000000000000000000b5ffffffa501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1ffffff48000000000000ebffffff1e00000000000000000000000000002de7fffffffffffff4d8dcf7ffffffffffffd61a00000000000000000000000000000000000038ffffffffff1c000000000000000000004affffffffff8200000000000000000000000047f5ffec3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ef2fffffffffffffffffffffffffffffffffffffd75000000000000000000acffffff2000000000000000000000000043ffffffff59000000000000000000000000000000000000ddffffffd8040000000019ffffff0400000000000000000000000000000000000000000000000000000055ffffffff6f0000000000000000000000000000000000000000000000000000000083ffffffff6b0000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000005bffffed20000c7cf2ffffffffffe31e00000000000000a2ffffffff400000000000000000000000005cffffffff88000000000000000000000000000023f8ffffff8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090ffffff7a000000000000baffffff50000000000000000000000000001ee6fffffffff995370000000346a9feffffffffd20e000000000000000000000000000000000038ffffffffff1c00000000000000000001d1ffffffffad000000000000000000000000000037aa290000000000000000000000000000000000000000000000000000000035c7fbffffd21700000000000000000000000000000000000068feffffffffffffffffffffffffffffffffffffffffff960000000000000000acffffff2000000000000000000000000000ccffffffc900000000000000000000000000000000000082ffffffff8e0000000007ffffff150000000037a66d000000000000000000000000000000000000000004ecffffffb50000428080806803000000000000000000000000117580807e09000095ffffffff4d0000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000001efefffff9d6f4ffffffffffffffffb700000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000082ffffffff6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005effffffac00000000000088ffffff8100000000000000000000000003c4ffffffffe02e000000000000000047f1ffffffffa3000000000000000000000000000000000038ffffffffff1c00000000000000000059ffffffffef11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172faffffffcd130000000000000000000000000000000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff6900000000000000acffffff200000000000000000000000000056ffffffff3800000000000000000000000000000000000fecffffffffa416000000f6ffff2700002fa9feffff5c0000000000000000000000000000000000000000c4ffffffd3000020f8ffffff83000000000000000000000000bbffffffa3000000a2ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000adfffffffffffffffff5d5f6ffffff25000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000009dffffffffd53000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002dffffffde00000000000056ffffffb30000000000000000000000006affffffffeb21000000000000000000003af9ffffffff460000000000000000000000000000000038ffffffffff1c000000000000000000c1ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000014b4ffffffffc60f00000000000000000000000000000000000018e8fffffffffff4780900000000000000000159e2fffffffffff936000000000000acffffff20000000000000000000000000005effffffffa700000000000000000000000000000000000053fefffffffff49f5529e6ffff656bbeffffffffffef1200000000000000000000000000000000000000b9ffffffe100000089fffffff8210000000000000000000054fffffff61c000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000018dbfffffffffff4820f0017dfffff63000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000004ffffffffff73c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f7ffffff11000000000024ffffffe400000000000000000000000aeaffffffff5100000000000000000000000075ffffffffd10000000000000000000000000000000038ffffffffff1c000000000000000018fdfffffffc14000000000000000000000000000000000000000000000016a6f3ee910b000000000000000000000000003fe4ffffffffbf0c0000000000000000000000000000000000000095ffffffffffe53100000000000000000000000017caffffffffffc1000000000000acffffff2000000000000000000000000000cefffffffffb1b00000000000000000000000000000000000074fffffffffffffffffffffffffffffffffffff8640000000000000000000000000000000000000000e1ffffffcb0000000ee9ffffffab00000000000000000007deffffff8300000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000128ee2f9db83130000000085ffff7e000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000b3ffffffffee2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fccccccccccccf8ffffffd5cccccccccccdffffffffcccccccbb641000000000069ffffffffbf0000000000000000000000000004ddffffffff4600000000000000000000000000000038ffffffffff1c00000000000000006bffffffffbe000000000000000000000000000000000000000000000004ceffffffffb40000000000000000000000027ffcffffffffb809000000000000000000000000000000000000001cf8fffffffff42800000000000000000000000000000edcffffffffff400000000000acffffff2000000000000000000000000040ffffffffffff850000000000000000000000000000000000000054f3ffffffffffffffffffffffffffffffc83100000000000000153b00000000000000000000004dffffffffa10000000069ffffffff3c000000000000000079ffffffe70c00000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000017c2fbffffffe0190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005faffffffffffffffffffffffffffffffffffffffffffffffffffe90200000000ceffffffff4b00000000000000000000000000006dffffffffac00000000000000000000000000000038ffffffffff1c0000000000000000a9ffffffff70000000000000000000000000000000000000000000000054ffffffffffff380000000000000000001abfffffffffffaf0700000000000000000000000000000000000000008bffffffffff620000000000000000000000000000000034fdffffffffb70000000000acffffff20000000000000000000000000b0ffffffffffffeb08000000000000000000000000000000000000001c9afbffffffffffffffffffffffc85d01000000000000000bdaffac19000000000000000029e8ffffffff4b0000000003d4ffffffcb0100000000000018f2ffffff630000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ceffffffffffffffffffffffffffffffffffffffffffffffffffff2400000025ffffffffe803000000000000000000000000000013fbfffffff70d000000000000000000000000000038ffffffffff1c0000000000000000d9ffffffff3b000000000000000000000000000000000000000000000076ffffffffffff590000000000000000036a808080807c5302000000000000000000000000000000000000000000e0ffffffffda020000000000000000000000000000000000aefffffffffb12000000000000000000000000000000000000000023fdffffffffffffff630000000000000000000000000000000000000000001965afd4eafdffffe49f6c2a0000000000000000000090fffffff59437030000001b7df4ffffffffca02000000000048ffffffff5d0000000000009dffffffd0020000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000002a82c8e6faf5dbab600a000000005ef7ffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ae0feffffffffffffffffffffffffffffffffffffffffffffffff4e0000006effffffff9d00000000000000000000000000000000c2ffffffff4e000000000000000000000000000038ffffffffff1c000000000000000bfdfffffffe0c000000000000000000000000000000000000000000000051ffffffffffff350000000000000000000000000000000000000000000000000000000000000000000000000023ffffffffff6d0000000000000000000000000000000000003effffffffff50000000000000000000000000000000000000000092ffffffffc7ffffffd2000000000000000000000000000000000000000000000000000088ffff9200000000000000000000000001aefffffffffffff4dbd1e4fffffffffffff22e00000000000000b8ffffffe40a0000000031fdffffff43000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff080000000000000000004797b8d8fdffffffffcdccccccccccccbf00000000a4ffffffff400000000000000000000000005cffffffff8800000000000d9bfdffffffffffffffffec64000000bfffffff88000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035ffffffd200000000000061ffffffab000000000000000000acffffffff5c0000000000000000000000000000000081ffffffff8e000000000000000000000000000038ffffffffff1c0000000dd8d8d8ddfffffffffdd8d8d8d8d8d8d8d8d8d8d8bf20000000000000000000000003caffffffffaf000000000000000000000000000000000000000000000000000000000000000000000000000056ffffffffff2600000000000000000000000000000000000004f3ffffffff85000000ccffffffdc00000000000000000000000ff3ffffffec40ffffffff410000000000000000000000000000000000000000000000000078ffffa1000000000000000000000000000072f4ffffffffffffffffffffffffffec3b00000000000000002bfcffffff7f00000000c1ffffffb300000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff08000000000000000032fffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000015cdffffffffffffffffffffffffbc1800deffffff88000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f8fffffc0b00000000002cffffffe2000000000000000000dcffffffff28000000000000000000000000000000004dffffffffbf000000000000000000000000000038ffffffffff1c00000010ffffffffffffffffffffffffffffffffffffffffff7e00000000000000000000000012a1f3ec8b09000000acffffffffa4000000000000000000000000000000000000028ceeffffffff5f00000079ffffffffe90000000000000000000000000000000000000000bdffffffffa7000000ccffffffdc000000000000000000000074ffffffff9701ddffffffb00000000000000000000000000000000000000000000000000068ffffb10000000000000000000000000000001793f7fffffffffffffffffffba5170000000000000000000099fffffff51b000054fffffffb2700000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff08000000000000000048fffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff88000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9ffffff3e000000000002f3ffffff1a0000000000000007fdfffffffd050000000000000000000000000000000028ffffffffea000000000000000000000000000038ffffffffff1c00000010ffffffffffffffffffffffffffffffffffffffffff84000000000000000000000000000000000000000000acffffffffa400000000000000000000000000000000000093ffffffffff85000000008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb000000ccffffffdc0000000000000000000003e1ffffffff2d0076fffffffd2200000000000000000000000000000000000000000000000058ffffc000000000000000000000000000000000000b53a1d2effbf2dfb3751c00000000000000000000000016f1ffffffa10007deffffff930000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff08000000000000000048fffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000005cffffffffffcb45040000002b8cefffffedffffffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093ffffff74000000000000c0ffffff510000000000000023ffffffffe3000000000000000000000000000000000008ffffffffff080000000000000000000000000038ffffffffff1c0000000000000064ffffffffab00000000000000000000000000000000000000000000000000000000000000000000acffffffffa4000000000000000000000000000000000073ffffffffffaa010000000096ffffffffbb00000000000000000000000000000000000000008fffffffffc5000000ccffffffdc0000000000000000000056ffffffffbf000013f7ffffff8e00000000000000000000000000000000000000000000000041ffffd0000000000000000000000000000000000000000000000000000000000000000000000000000000000079fffffffc206effffffef130000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffe000000000000000000000000000000000000000000000003eddffffaa0000000000000000000000ccffffffffbc080000000000000019b2ffffffffffff88000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005dffffffaa0000000000008affffff88000000000000003affffffffcf000000000000000000000000000000000000f4ffffffff200000000000000000000000000038ffffffffff1c0000000000000068ffffffffa800000000000000000000000000000000000000000000000000024903000000000000acffffffffa40000000000000000000000000000000054feffffffffc809000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000000000000c7ffffffff52000000a1fffffff10c000000000000000000000000000000000000000000000006c5ffdf000000000000000000000000000000000000000000000000000000000000000000000000000000000008e0ffffff8fe1ffffff73000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffe00000000000000000000000000000000000000000000034f4fffff31b0000000000000000000023fffffffff81b0000000000000000000083ffffffffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027ffffffdf00000000000054ffffffc0000000000000004affffffffbf000000000000000000000000000000000000e4ffffffff310000000000000000000000000038ffffffffff1c0000000000000065ffffffffaa000000000000000000000000000000000000000000000000005cffe4811500000000acffffffffa40000000000000000000000000000003af7ffffffffe01700000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000000000037ffffffffe00300000037ffffffff6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022f5d717c7257290000000000000000000000000000000059fffffffcffffffdc06000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e1ffffffe300000000000000000000000000000000000000000023e9ffffff7300000000000000000000005affffffffa90000000000000000000000008dffffffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001efffffff1500000000001ffffffff40300000000000051ffffffffb9000000000000000000000000000000000000deffffffff380000000000000000000000000038ffffffffff1c0000000000000060ffffffffaf00000000000000000000000000000000000000000000000000c9ffffffc600000000acffffffffa4000000000000000000000000000025ebfffffffff12c0000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc000000000000000000a8ffffffff760000000000ccffffffda010000000000000000000000000000000000000000000000000000000000000000000000000000000000002594efffffffffffffffdd8f290000000000000000000000000000c7ffffffffffff5300000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000d1fffffff3000000000000000000000000000000000000000015dbffffffd304000000000000000000000083ffffffff6b0000000000000000000000005cffffffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbffffff4b000000000000e8ffffff2e00000000000056ffffffffb5000000000000000000000000000000000000d9ffffffff3e0000000000000000000000000038ffffffffff1c00000010fffffffffffffffffffffffffffffffffffffffffffffdae0000000000000000001affffffff9000000000acffffffffa40000000000000000000000000014dbfffffffffc48000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000000001dfbfffffff612000000000062ffffffff4b00000000000000000000003898d3f1fcf1d29d4f03000000001dd9feff7800000000000000000000017cf9fffffffffffffffffffffffc9d1a00000000000000000000000039ffffffffffc20000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000baffffffff1f0000000000000000000000000000000000000bcafffffffe3d00000000000000000000000095ffffffff4d0000000000000000000000005cffffffff88000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085ffffff81000000000000b3ffffff6600000000000051ffffffffb9000000000000000000000000000000000000deffffffff380000000000000000000000000038ffffffffff1c00000010ffffffffffffffffffffffffffffffffffffffffffffffff1100000000000000004cfffffffa1700000000acffffffffa400000000000000000000000008c6ffffffffff6b00000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000000008affffffff9b00000000000009eeffffffba00000000000000000010aaffffffffffffffffffe05a00000072ffffff78000000000000000000019bffffffffffffffffffffffffffffffeb48000000000000000000000000a9fffffffe340000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff080000000000000000000000000081ffffffff74000000000000000000000000000000000004b5ffffffffa000000000000000000000000000a2ffffffff400000000000000000000000005cffffffff88000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044ffffffb70000000000007dffffff8e0000000000004affffffffc0000000000000000000000000000000000000e4ffffffff300000000000000000000000000038ffffffffff1c0000000dd8d8d8d8ffffffffffd9d8d8d8d8d8d8d8d8d8d8d8d8d8d810000000000000000062ffffffc00000000000acffffffffa4000000000000000000000002acffffffffff920000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc000000000000000befffffffff2e000000000000008dffffffff2a0000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff780000000000000000006bfffffffffff5a268515873b0f8ffffffffea08000000000000000000000020f8ffffa3000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff080000000000000000000000000036ffffffffee24000000000000000000000000000000009dffffffffee1600000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018cf2ffec00000000000047ffffe43900000000000039ffffffffd0000000000000000000000000000000000000f5ffffffff1f0000000000000000000000000038ffffffffff1c0000000000000000dcffffffff2e00000000000000000000000000000000000000000000005dffffff9b0000000000acffffffffa400000000000000000000008dffffffffffb5030000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc000000000000006cffffffffc0000000000000000024feffffff980000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff78000000000000000010f1ffffffffb4160000000000001387f9ffff5e0000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff080000000000000000000000000000beffffffffec660e0000000000000000000000000082fffffffee1470000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021ffffffffe3000000000000000000000000000000000008ffffffffff070000000000000000000000000038ffffffffff1c00000000000000009fffffffff6a00000000000000000000000000000000000000000000003cffffff950000000000acffffffffa4000000000000000000006dffffffffffd10d000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000002dbffffffff53000000000000000000b9fffffff512000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff78000000000000000061ffffffffbe040000000000000000002ec499000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018ffffffff0800000000000000000000000000002cf3fffffffffffddecec9a3010000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006fcfffffffd060000000000000000000000000000000028ffffffffe8000000000000000000000000000038ffffffffff1c000000000000000062ffffffffb000000000000000000000000000000000000000000000000af5ffffba0000000000acffffffffa40000000000000000004efdffffffffe71d00000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc0000000000004effffffffe2030000000000000000004effffffff76000000000043ffffffffde0d000000000000000f95feffffffffff780000000000000000a2ffffffff2d0000000000000000000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000000000000000000000000000000000000000018ffffffff080000000000000000000000000000004cf5ffffffffffffffffff110000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd4000000000000000000daffffffff29000000000000000000000000000000004effffffffbd000000000000000000000000000038ffffffffff1c000000000000000015f9fffffffa140000000000000000000000000000000000000000000000a4fffff91200000000acffffffffa4000000000000000035f5fffffffff6350000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc000000000000beffffffff780000000000000000000002e0ffffffe2030000000065ffffffff71000000000000000000005bfaffffffff780000000000000000bdffffffe4000000000000000000000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc000000000000000000000000000000000000000000070ffffffb8000018ffffffff08000000000000000000000000000000002dcaffffffffffffffff1d0000000000003898d3f1fcf1d29d4f03000000001dd9feff7800000000a4ffffffff400000000000000000000000005cffffffff880000000000000090fffff791020000000000059bf9ffff6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd4000000000000000000a9ffffffff5d0000000000000000000000000000000082ffffffff8b000000000000000000000000000038ffffffffff1c000000000000000000a9ffffffff7900000000000000000000000000000000000000000000002cfaffff8700000000acffffffffa40000000000000021e9fffffffffe53000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000002ffffffffff713000000000000000000000079ffffffff540000000070ffffffff4500000000000000000000006dffffffff780000000000000000c3ffffffd3000000000000000000000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc000000000000000000000000000000000000000000070ffffffb8000018ffffffff080000000000000000000000000000000000004291cde8faefd59a110000000010aaffffffffffffffffffe05a00000072ffffff7800000000a4ffffffff400000000000000000000000005cffffffff880000000000000002adffffffaa0600000009b5ffffff830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd40000000000000000006bffffffff9e00000000000000000000000000000000c2ffffffff4a000000000000000000000000000038ffffffffff1c00000000000000000040fffffffff01400000000000000000000000000000000000000000000007efffff930000000acffffffffa400000000000011d7ffffffffff7800000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000caffffffd90000000000a0ffffffff9d00000000000000000000000015f9ffffffc30000000051ffffffff55000000000000000000000058ffffffff780000000000000000adffffffec000000000000000000000000000000000000b2cccccccccccccccccccccccccccccccccccccccccccc9900000000000000000000000000000000000000000070ffffffb8000018ffffffff0800000000000000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff7800000000a4ffffffff400000000000000000000000005cffffffff88000000000000000009c7ffffffb80a000dc0ffffffa2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd400000000000000000022ffffffffe903000000000000000000000000000014fbfffffff50b000000000000000000000000000038ffffffffff1c00000000000000000000b3ffffffffaf010000000000000000000000000000000000000000000004c5ffffdb050000acffffffffa4000000000007c1ffffffffff9e0000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000c7ffffffd40000000018f9ffffffff2f00000000000000000000000000a5ffffffff3300000012f6ffffffb1000000000000000000000058ffffffff7800000000000000007bffffffff39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff0800000000000000000000000000000000000000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000014dbffffffc421caffffffbd05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd400000000000000000000caffffffff4c00000000000000000000000000006effffffffa800000000000000000000000000000038ffffffffff1c0000000000000000000021f6ffffffff8b01000000000000000000000012bbe432000000000000000fcaffce070000acffffffffa40000000002a7ffffffffffbf050000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000c2ffffffce0000000082ffffffffc200000000000000000000000000003affffffffa10000000092ffffffff850200000000000000000058ffffffff78000000000000000029feffffffc2020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff080000000000000000000000000000001580c9eefbeaca8b36000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff7800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000024ebfffffffaffffffd30f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd40000000000000000000065ffffffffc00000000000000000000000000005deffffffff4100000000000000000000000000000000000000000000000000000000000000000064ffffffffffaa120000000000000000003addffffec2b00000000000000106704000000acffffffffa40000082dadffffffffffd911000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000b6ffffffc100000008eaffffffff54000000000000000000000000000000cffffffff9170000000dcfffffffffd0580a0000000000000058ffffffff78000000000000000000a8ffffffff9b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff08000000000000000000000000000047efffffffffffffffffc22a00000043ffffffffde0d000000000000000f95feffffffffff7800000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000039f6ffffffffffe51d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd40000000000000000000008e8ffffffff5300000000000000000000000077ffffffffcd000000000000000000000000000000000000000000000000000000000000000000000086fffffffffff08332010000000a47adfeffffffff9400000000000000000000000000acffffffffffffffffffffffffffffe72400000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000a7ffffffb300000064fffffffdad020000000000000000000000000000003becffffff7f0000000011b7fffffffffff4bc835a3b1e130a59ffffffff7800000000000000000016e4ffffffffc01d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff08000000000000000000000000002cf6ffffffffffffffffffffed0a000065ffffffff71000000000000000000005bfaffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000052fdfffffff230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd4000000000000000000000065ffffffffed22000000000000000000003cfaffffffff4100000000000000000000000000000000000000000000000000000000000000000000000183fefffffffffffff4ddd2e2faffffffffffff9a0200000000000000000000000000acffffffffffffffffffffffffffda270000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000094ffffffa0000000000000000000000000000000000000000000000000000000000000000000000000005cdcffffffffffffffffffffffffffffffff78000000000000000000002be6ffffffffef600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff0800000000000000000000000000b3fffffffffff7d6f0ffffff7900000070ffffffff4500000000000000000000006dffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd4000000000000000000000002bfffffffffe12f000000000000000048f1ffffffff9c00000000000000000000000000000000000035c7fbffffd217000000000000000000000000004dedfffffffffffffffffffffffffffff270000000000000111500000000000000acffffffffffffffffffffffffe219000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000007effffff8b00000000000000000000000000000000000000000000000000000000000000000000000000000249a2edffffffffffffffffffffffffff7800000000000000000000001abdffffffffffb91a0000000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc00000f0ffffffffffffffffffffffffffffffffffffffffffffb8000018ffffffffcdccccccc970000000000000000ffdffffffff9609000046d2cf0500000051ffffffff55000000000000000000000058ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd40000000000000000000000001ae3fffffffff996380000000347aaffffffffffcd0b000000000000000000000000000000000172faffffffcd130000000000000000000000000000000e7ceefffffffffffffffffffffba41a00000000000007cedb1f000000000000acffffffffedccccdeffffffffffe5270000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000066ffffff75000000000000000000000000000000000000000000000000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff780000000000000000000000000167f1ffffffffe62500000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc00000f0ffffffffffffffffffffffffffffffffffffffffffffb8000018fffffffffffffffffffa0200000000000044ffffffffd8030000000001050000000012f6ffffffb1000000000000000000000058ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa8cbcccccccccccccccccccccccccccccccce5fffffff7ccccccccca6b000000000000002ae5fffffffffffff4d8ddf8ffffffffffffd3180000000000000000000000000000000014b4ffffffffc60f00000000000000000000000000000000000009488fc6ddf3faefd2aa6a19000000000000000013f2ffda140000000000acffffffffa40000002ddcffffffffe62000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000004cffffff5900000000000000000000000000004ffffff59c0600000000000000000000000000000000000000000000000000000000000058ffffffff7800000000000000000000000000001dc3ffffffffce01000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc00000f0ffffffffffffffffffffffffffffffffffffffffffffb8000018ffffffffffffffffffff080000000000005affffffff9a00000000000000000000000092ffffffff850200000000000000000058ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffffffffffffffffffffffffffffffffffffffffffffffffffca00000000000000001ec5ffffffffffffffffffffffffffffaf10000000000000000000000000000000003fe4ffffffffbf0c0000000000000000000000000000000000000000000000000000000000000000000000000000000047fcffb90200000000acffffffffa40000000020e7ffffffffd813000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000032ffffff3d000000000000000000000000000000b5ffffffa501000000000000000000000000000000000000000000000000000000000058ffffffff7600000000000000000000000000000005b0ffffffff27000000000000000000b2cccccccccccccccccccccccccccccccccccccccccccc990000bfcccccccccccccccccccccccccccccccccccccccccccc92000018ffffffffffffffffffff0800000000000063ffffffff810000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc0000000000000000000367e3ffffffffffffffffffffd45300000000000000000000000000000000027ffcffffffffb8090000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffff6800000000acffffffffa4000000000031f3ffffffffc6090000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000000000000000000023f8ffffff8a00000000000000000000000000000000000000000000000000000000005fffffffff660000000000000000000000000000000017fdffffff3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ffffffff800000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc0000000000000000000000034892c8ebfaf8e6c1873900000000000000000000000000000000001abfffffffffffaf0700000000000000a4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd800000000000004d8ffec0b000000acffffffffa400000000000047fbffffffffb10300000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000000000000000000000000000000000082ffffffff6d0000000000000000000000000000000000000000000000000000000075ffffffff530000000000000000000000000000000000dfffffff2d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ffffffff800000000000000000000000000000005cdcffffffffffffffffffffffffffffffff7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffffc3030000000000000000000000007cffffffd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036a808080807c53020000000000000000a4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8000000000000005cffff6c000000acffffffffa4000000000000005fffffffffff98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009dffffffffd53000000000000000000000000000000000000000000000000000000a8ffffffff240000000000000000000000000000000000c0ffffff1b00000000000000000000000000000000145fabd5edfcf3d9b076280000000000000000000000044c96cbedfbf6e3c68a4200000000000000000099cccccccccccccccccccccccccc3f00000000000064ffffffff80000000000000000000000000000000000249a2edffffffffffffffffffffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009affffffff850000000000000000000000007cffffffd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8000000000000000ef9ffc6000000acffffffffa400000000000000007cffffffffff7c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ffffffffff73c00000000000000000000000048741c0000000000000000000011f5ffffffe6000000000000000000000000000000000000a1ffffff0800000000000000000000000000000f88f7ffffffffffffffffffffc64a00000000000000025fe1ffffffffffffffffffffd24b00000000000000b5ffffffffffffffffffffffffff5000000000000064ffffffff800000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008cefffffffd4500000000000000000000007cffffffd40000000000000000acffffffffa40000000000000000000000000000000011b3f9fffffff123000000000000000000000000000000000000000000000033fdffffffffffe1ccccccccccccccccccccccccccccccccccccccccccac000000000029baf3fffffc0a0000acffffffffa400000000000000000098ffffffffff620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b3ffffffffee290000000000000000000059fffff67b070000000000000002a8ffffffff8800000000000000000000000000000000000082fffff6000000000000000000000000000032e6ffffffffffffffffffffffffffffaa0c000000001fcbffffffffffffffffffffffffffff9001000000000052ffffffffffffffffffffffffff4d00000000000064ffffffff800000000000000000000000000000000000000000000000000000000058ffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023f0ffffffe818000000000000000000007cffffffd40000000000000000acffffffffa400000000000000000000000000000001b4ffffffffff5500000000000000000038ffffffffff1c00000000000000000086ffffffffffd007000000000000000000000000000000000000000000000000000ee3ffffffffff2d0000acffffffffa400000000000000000003b2fffffffffb4a000000000000000000000000000000000000000000000024e2fffff7b825000000000000000000000000000000000054d9f9cb3800000000000000000000000000000000000017c2fbffffffe019000000000000000005e6ffffffffe378230000000033b8fffffffff71d0000000000000000000000000000000000000a1818160000000000000000000000000044f4fffffffffffff5dcd1e1feffffffffffce10000026ebfffffffffffff1d8d0e0feffffffffff8b00000000000067feffffd4d7f7ffffffffffe21900000000000064ffffffff800000000000000000000000000000000000000000000000000000000058ffffffff7600000000000000000041cbf3c237000000000057d4f2b828000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052ffffffffbd020000000000000000007cffffffd40000000000000000acffffffffa400000000000000000000000000000072ffffffffff960000000000000000000038ffffffffff1c00000000000000000005cbffffffffff8d000000000000000000000000000000000000000000000000004fffffffffffff300000acffffffffa4000000000000000000000ac8fffffffff435000000000000000000000000000000000000000000000020ddfffffff35c00000000000000000000000000000053fffffffff92e0000000000000000000000000000000000000000000000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000000000000000000000000000000000000000000000000000000000000000001dedffffffffffa93f03000000105cd0ffffffff5d000006d8fffffff1892c010000001269e8ffffffff3c0000000000005ffdfff543000000000000000000000000000064ffffffff80000000000000000000000000000000000000000000000000000000005fffffffff6600000000000000002cf8fffffff32300000046ffffffffe31000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008fffffffff7d0000000000000000007cffffffd40000000000000000acffffffffa4000000000000000000000000000035faffffffffcf070000000000000000000038ffffffffff1c0000000000000000000026f4fffffffffe4400000000000000000000000000000000000000000000000057fffffffffffb0c0000acffffffffa4000000000000000000000014daffffffffea2400000000000000000000000000000000000000000000001bd9ffffffff9f0b00000000000000000000000000d0ffffffffffb300000000000000000000000000000000000000000000000000000000000000000000001ebbffffffffffffffffffffffffffff88000000000000000000000000000000000000000000000000000000000000000000000000c2fffffffff54b00000000000000000271f9ffa4000000003ff9ffa315000000000000000018dcffffffbf0000000000000058fbfff74a0000000000000000000000000064ffffffff800000000000000000000000000000000000000000000000000000000075ffffffff53000000000000000084ffffffffff7a000000a6ffffffffff56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c7fffffffc3e00000000000000007cffffffd40000000000000000acffffffffa4000000000000000000000000000eddfffffffff225000000000000000000000038ffffffffff1c000000000000000000000066ffffffffffe513000000000000000000000000000000000000000000000012e8ffffffff97000000acffffffffa400000000000000000000000022e9ffffffffdc16000000000000000000000000000000000000000000000017d3ffffffffd72e000000000000000000000000f4ffffffffffd90000000000003898d3f1fcf1d29d4f03000000001dd9feff780000000000000000000000004dc6ffffffffffffffffffffe25a0000000000000000000000000000000000000000000000000000000000000000000000004afffffffffe4400000000000000000000002d660700000000001b28000000000000000000000049fffffffd150000000000000051f9fff95100000000000000000000000064ffffffff8000000000000000000000000000000000000000000000000000000000a8ffffffff24000000000000000080ffffffffff75000000a2ffffffffff510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001decffffffe414000000000000007cffffffd40000000000000000acffffffffa400000000000000000000000000a8ffffffffff5900000000000000000000000038ffffffffff1c000000000000000000000000b0ffffffffffad0000000000000000000000000000000000000000000000002ab6efea8805000000acffffffffa40000000000000000000000000034f4ffffffffcb0b000000000000000000000000000000000000000000000013cefffffffff76a0000000000000000000000d1ffffffffffb50000000010aaffffffffffffffffffe05a00000072ffffff7800000000000000000000000000002877b0d8f1fbefd9a75b0800000000000000000000000000000000000000000000000000000000000000000000000000c3ffffffff9500000000000000000000000000000000000000000000000000000000000000000002f3ffffff4b00000000000000004af7fffb59000000000000000000000064ffffffff80000000000000000000000000000048741c0000000000000000000011f5ffffffe600000000000000000026f6fffffff01e0000003ffeffffffdf0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048feffffffb6010000000000007cffffffd40000000000000000acffffffffa400000000000000000000000065ffffffffff9b0000000000000000000000000038ffffffffff1c00000000000000000000000014e6ffffffffff630000000000000000000000000000000000000000000000000000000000000000acffffffffa400000000000000000000000000004afbffffffffb704000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000057fffffffffa3100000009c6ffffffffffffffffffffffffac0c00a2ffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021fffffffffc1b00000000000000000000000000000000000000000000000000000000000000000000e6ffffff6300000000000000000044f6fffd5e0000000000000000000064ffffffff800000000000000000000000000059fffff67b070000000000000002a8ffffffff88000000000000000000003bc7f1be31000000000051d1f0b42300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085ffffffff750000000000007cffffffd40000000000000000acffffffffa400000000000000000000002bf6ffffffffd2090000000000000000000000000038ffffffffff1c0000000000000000000000000047fefffffffff42500000000000000000000000000000000000000000000000000000000000000acffffffffa400000000000000000000000000000063ffffffffffa0000000000000000000000000000000000000000000000000065c7d808080805f0000000000000000000057dbf9cd3b0000000082fffffffffffff3d5dff9ffffffffcb16cfffffff7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016ae1f9c23100000000000000000064ffffffffb50000000000000000000000000000000000000000000000000000000000000000000017feffffff60000000000000000000004afafffd5a00000000000000000064ffffffff8000000000000000000000000005e6ffffffffe378230000000033b8fffffffff71d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003befffffffb3800000000007cffffffd40000000000000000acffffffffa40000000000000000000009d4fffffffff429000000000000000000000000000038ffffffffff1c000000000000000000000000000091ffffffffffca04000000000000000000000000000000000000000020b4f6e9830600000000acffffffffa40000000000000000000000000000000080ffffffffff840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff78000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ffffffffff5210000000000000000a4ffffffff7500000000000000000000000000000000000000000000000000000000000000000000a4ffffffff3e00000000000000000000006bfffff83c000000000000000064ffffffff800000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018e7ffffffe011000000007cffffffd40000000000000000acffffffffa4000000000000000000009affffffffff5e00000000000000000000000000000038ffffffffff1c000000000000000000000000000008d3ffffffffff84000000000000000000000000000000000000000de1ffffffff9a00000000acffffffffa400000000000000000000000000000000009bffffffffff6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043ffffffffde0d000000000000000f95feffffffffff780000000000000000000000000000000000003eddffffaa0000000000000000000000000000000000000000000002edffffffffff980000000000000000c8ffffffff4000000000000000000000000000000000000000000000000000000000000000000ba1ffffffffe204000000000000000000000000b7ffffdc050000000000000064ffffffff8000000000000000000000000000001ebbffffffffffffffffffffffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040fcffffffaf000000007cffffffd40000000000000000acffffffffa400000000000000000056ffffffffff9f0000000000000000000000000000000038ffffffffff1c0000000000000000000000000000002ef8fffffffffd3c00000000000000000000000000000000000065fffffffffffe1d000000acffffffffa400000000000000000000000000000000000282e9fffffffd50000000000000003898d3f1fcf1d29d4f03000000001dd9feff780000000000000070ffffffff74000000000000000065ffffffff71000000000000000000005bfaffffffff78000000000000000000000000000000000034f4fffff31b0000000000000000000000000000000000000000000012ffffffffffffb90000000000000000dbffffffff270000000000000000000000000000000000000000000000000000000000000763e3ffffffffff5f0000000000000000000000000034ffffff670000000000000064ffffffff80000000000000000000000000000000004dc6ffffffffffffffffffffe25a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007affffffff6e0000007cffffffd40000000000000000acffffffffa4000000000000000022f1ffffffffd50a0000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000071ffffffffffe00f000000000000000000000000000000000088ffffffffffff3d00000000000000000000000000000000000000000000000000000000000000000000000000000010aaffffffffffffffffffe05a00000072ffffff780000000000000070ffffffff74000000000000000070ffffffff4500000000000000000000006dffffffff780000000000000000000000000000000023e9ffffff73000000000000000000000000000000000000000000000002ebffffffffff950000000000000000eeffffffff17000000000000000000000000000000000000000000000000000000002286e8ffffffffffff93000000000000000000000000000000deffffb80000000000000064ffffffff800000000000000000000000000000000000002877b0d8f1fbefd9a75b08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b6fffffff93300007cffffffd40000000000000000acffffffffa40000000000000005cafffffffff62b000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000001baffffffffffa5000000000000000000000000000000000064fffffffffffe1b000000000000000000000000000000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff780000000000000070ffffffff74000000000000000051ffffffff55000000000000000000000058ffffffff7800000000000000000000000000000015dbffffffd30400000000000000000000000000000000000000000000000069fffffffff31e0000000000000000eeffffffff17000000000000000000000000000000000000000000000000000352bcfeffffffffffffffb90100000000004cc2e8bc0a0000000000d0ffffd10000008ffeffffffffffffffffffffffffffffff7c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013e1ffffffdc0e007cffffffd40000000000000000acffffffffa4000000000000008cffffffffff6300000000000000000000000000000000000038ffffffffff1c00000000000000000000000000000000001aecffffffffff5a000000000000000000000000000000000bdeffffffff95000000000000003898d3f1fcf1d29d4f03000000001dd9feff780000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff780000000000000070ffffffff74000000000000000012f6ffffffb1000000000000000000000058ffffffff7800000000000000000000000000000bcafffffffe3d000000000000000000000000000000000000000000000000000064dff8bf2c000000000000000000dcffffffff2600000000000000000000000000000000000000000000000b76e1ffffffffffffffffffffffc4210000000045ffffff7c0000000013f7ffffbf000000cbffffffffffffffffffffffffffffffff7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038faffffffa8007affffffd40000000000000000acffffffffa40000000000004afeffffffffa40000000000000000000000000000000000000038ffffffffff1c00000000000000000000000000000000000051fffffffffff01f000000000000000000000000000000001caff6e77d04000000000010aaffffffffffffffffffe05a00000072ffffff7800000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff780000000000000070ffffffff7400000000000000000092ffffffff850200000000000000000058ffffffff780000000000000000000000000004b5ffffffffa00000000000000000000000000000000000000000000000000000000000000000000000000000000000c8ffffffff400000000000000000000000000000000000000000000054e6fffffffffffffffeb54fa3ffffffe82600000003e0fffffb6b05001ebdffffff7c000000ccffffffffffffffffffffffffffffffff7c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff6673ffffffd40000000000000000acffffffffa4000000000039eeffffffffd30c0000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000009cffffffffffc3020000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff7800000000000000000000000043ffffffffde0d000000000000000f95feffffffffff780000000000000070ffffffff740000000000000000000dcfffffffffd0580a0000000000000058ffffffff78000000000000000000000000009dffffffffee1600000000000000000000000000000000000000000000000000000000000000000000000000000000009dffffffff720000000000000000000000000000000000000000008cfffffffffffffff394260000007affffffcd010000004afdfffffffaebffffffffe71000000036607f9fc9ffffffffe6cccccccccccccc620000000000000000000000003fafeafae29e2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acfffffff788ffffffd40000000000000000acffffffffedccccccccdfffffffffffcf1d000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000bdbffffffffff7b0000000000000000000000000000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff7800000000000000000000000065ffffffff71000000000000000000005bfaffffffff780000000000000070ffffffff740000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff7800000000000000000000000082fffffffee1470000000000000000000000000014ffffffffffffffffffffffffffffffffffffffffe8000000000000005fffffffffb300000000000000000000000000000000000000007cffffffffffffe16e0e000000000001d3ffffff4d0000000056f0ffffffffffffffe02f00000000000000001fffffffff80000000000000000000000000000000000000008afffffffffffffa64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000edbfffffff8ffffffd40000000000000000acffffffffffffffffffffffffffffffdc8e390000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000036fbfffffffffb36000000000000000000000000000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff7800000000000000000000000070ffffffff4500000000000000000000006dffffffff780000000000000070ffffffff740000000000000000000000005cdcffffffffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000000000014ffffffffffffffffffffffffffffffffffffffffe8000000000000001ffefffffffb1800000000000000000000000000000000000029fbffffffffef6d0500000000000000008bffffff9d0000000000167bc5eefbedc0700c00000000000000000002f9ffffff800000000000000000000000000000000000005fffffd8563262e8fffe3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f7ffffffffffffd40000000000000000acffffffffffffffffffffffffffffffffffffc541000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000007cffffffffffdb0b0000000000000000000000000000000000000000000043ffffffffde0d000000000000000f95feffffffffff7800000000000000000000000051ffffffff55000000000000000000000058ffffffff780000000000000070ffffffff74000000000000000000000000000249a2edffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000000000004f7ffffffffffffffffffffffffffffffffffffffe80000000000000000b5ffffffff960000000000000000000000000000000000008dffffffffd01e000000000000000000007fffffffc6000000000000000000000000000000000000000000000000daffffff80000000000000000000000000000000000000d4fff51c00000038ffffb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065ffffffffffffd40000000000000000acfffffffffffffffffffffffffffffffffffffffe970700000000000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000003c3ffffffffff9c0000000000000000000000000000000000000000000065ffffffff71000000000000000000005bfaffffffff7800000000000000000000000012f6ffffffb1000000000000000000000058ffffffff780000000000000070ffffffff740000000000000000000000000000000002306593b4d1e3f2f9feffffffff780000b4ffffffffffffffffffffffffffffffffffffffffff4c000000000000000091fffffffff4ccccccccccccccccccccccccccccb8000000000000000042fffffffffe470000000000000000000000000000000000c2ffffffee1a0000000000000000000000bcffffffcb000000000000000000000000000000000000000000000000b7ffffff80000000000000000000000000000000000008ffffbf0000000000e4ffe3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2ffffffffffd40000000000000000acffffffffa4000000000005152c63a9faffffffffffbc0b000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000020f1ffffffffff5100000000000000000000000000000000000000000070ffffffff4500000000000000000000006dffffffff780000000000000000000000000092ffffffff850200000000000000000058ffffffff780000000000000070ffffffff740000000000000000000000000000000000000000000000000058ffffffff780000b4ffffffffffffffffffffffffffffffffffffffffff4c00000000000000000bd8fffffffc3d0000000000000000000000000000000000000000000000acfffffffff7500000000000000000003fc6b309000000d6ffffff9e000000000000000000000056ffffffffb000000000001d83c2e3ebdbae5f070000000000000000000095ffffff80000000000000000000000000000000000006ffffc00000000000e6ffe10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ad4ffffffffd40000000000000000acffffffffa40000000000000000000019a5ffffffffffae000000000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000005cffffffffffec1a000000000000000000000000000000000000000051ffffffff55000000000000000000000058ffffffff78000000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff780000000000000070ffffffff740000000000000000000000000000000000000000000000000058ffffffff760000b4ffffffffffffffffffffffffffffffffffffffffff4c0000000000000000002ef7ffffffe4140000000000000000000000000000000000000000000012e3ffffffffffb14a07000000094bb6ffffff9f000000c3ffffff880000000000000000000273f9ffffffff670000000061f5ffffffffffffffdb3500000000000000000072ffffff80000000000000000000000000000000000000cffff61e0000003bffffaa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029f4ffffffd40000000000000000acffffffffa400000000000000000000000071ffffffffff600000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000a7ffffffffffbb010000000000000000000000000000000000000012f6ffffffb1000000000000000000000058ffffffff78000000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff780000000000000070ffffffff74000000000000000000000000000000000000000000000000005fffffffff6600008fcccccccccccccccccccccccccccccccccccccccccc3c0000000000000000000068ffffffffb601000000000000000000000000000000000000000000002ae2fffffffffffff9e2d0dcfbffffffffffed1a000087ffffffbd000000000000000044c8ffffffffffe00c00000051fffffffffffffffffffff12a00000000000000004fffffff8000000000000000000000000000000000000056ffffda573364e9fffc34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffffffa40000000000000000000000000098ffffffffdf0400000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000010e1ffffffffff72000000000000000000000000000000000000000092ffffffff850200000000000000000058ffffffff78000000000000000000000000000000005cdcffffffffffffffffffffffffffffffff780000000000000070ffffffff740000000000000000000000000000000000000000000000000075ffffffff53000000000000000000000000000000000000000000000000000000000000000000000000a8ffffffff7500000000000000000000000000000000000000000000001cccffffffffffffffffffffffffffffd42300000021f8ffffff4800000000065ac9fffffffffffff63c0000000be8fffff26f140632b9ffffffbe00000000000000002dffffff800000000000000000000000000000000000000081fefffffffffff85c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffffffa40000000000000000000000000013f2ffffffff4d00000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000003ffdfffffffff92f000000000000000000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff7800000000000000000000000000000000000249a2edffffffffffffffffffffffffff780000000000000070ffffffff7400000000000000000000000000000000000000000000000000a8ffffffff240000000000000000000000000000000000000000000000000000000000000000000000000edcfffffffb3900000000000000000000000000000000000000000000000260e4ffffffffffffffffffffe96e06000000000070fffffff76b031680e8ffffffffffffffed420000000068ffffff460000000002bfffffff1e0000000000000004c7ffff8000000000000000000000000000000000000000003cabe9f9e09a2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8fffffffffffffffffffffffffffffffffffffffffffffffffffbbb140000acffffffffa40000000000000000000000000000a9ffffffff9200000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000087ffffffffffd5080000000000000000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff78000000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff780000000000000070ffffffff74000000000000000000000048741c0000000000000000000011f5ffffffe60000001d807e5b0800000000000000000000000000000000000000000000000000000000000033f9ffffffe112000000000000000000000000000000000000000000000000054c93c7e9f8f7e2cc964c0900000000000000006bf7ffffffe1f7ffffffffffffffffb31e000000000040bbf8970000000000005bffffff4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8ffffffffffffffffffffffffffffffffffffffffffffffffffffff8b0000acffffffffa400000000000000000000000000006bffffffffc400000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000005ccffffffffff930000000000000000000000000000000000000000005cdcffffffffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000058ffffffff780000000000000070ffffffff740000000000000000000059fffff67b070000000000000002a8ffffffff8800000005e7ffffcd090000000000000000000000000000000000000000000000000000000000006effffffffb10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002097ffffffffffffffffffffbb4100000000000000000001000000000000005dffffff3f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e8ffffffffffffffffffffffffffffffffffffffffffffffffffffffa80000acffffffffa4000000000000000000000000000052ffffffffd900000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000027f5ffffffffff4a0000000000000000000000000000000000000000000249a2edffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000058ffffffff760000000000000070ffffffff7400000000000000000005e6ffffffffe378230000000033b8fffffffff71d0000000085ffffff7500000000000000000000000000000000000000000000000000000000000000aeffffffff70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005a6fffffffffffffffaa83600000000000000000000000000000000000000a3fffff511000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000961eafffffffea0aec1cbcccccccccccccccccccccccccccccccccc850000acffffffffa4000000000000000000000000000055ffffffffdf00000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000067ffffffffffe816000000000000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff7800000000000000000000000000000000000000000000000000000000005fffffffff660000000000000070ffffffff740000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000001ffdffffde0100000000000000000000000000000000000000000000000000000000000010dffffffffa350000000000000000000000000000000000000000000000000000000000000030310000000000000000000093ffffffffffffe9811a0000000000000000000000000000000000041441a6ffffff70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001bccffffffcf0e00000000000000000000000000000000000000000000acffffffffa400000000000000000000000000006effffffffc800000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000b1ffffffffffb3000000000000000000000000000000000000000000000000000000000000000058ffffffff78000000000000000000000000000000000000000000000000000000000075ffffffff530000000000000070ffffffff7400000000000000000000001ebbffffffffffffffffffffffffffff8800000000000000b5ffffff470000000000000000000000000000000000000000000000000000000000000037faffffffde0f000000000000000000000000000000000000000000000000000000002aacfe5c0000000000000000003dffffffffffea6d0800000000000000000000000000000000000000e4ffffffffd95700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019f1ffffff9b00000000000000000000000000000000000000000000acffffffffa40000000000000000000000000000b0ffffffffaa00000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000015e7ffffffffff690000000000000000000000000000000000000000000000000000000000000058ffffffff760000000000000000000000000000000000000000000000000000000000a8ffffffff240000000000000070ffffffff74000000000000000000000000004dc6ffffffffffffffffffffe25a00000000000000004dffffffaf000000000000000000000000000000000000000000000000000000000000000074ffffffffac000000000000000000000000000000000000000000000000000025a5fdffff5c000000000000000000a7ffffffffba14000000000000000000000000000000000000000000e4ffffffef5701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008bffffffff29000000000000000000000000000000000000000000acffffffffa40000000000000000000000000021f7ffffffff6400000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000048fefffffffff6290000000000000000000000000000000000000000000000000000000000005fffffffff6600000000000000000000000000000048741c0000000000000000000011f5ffffffe6000000000000000070ffffffff740000000000000000000000000000002877b0d8f1fbefd9a75b0800000000000000000002e1fffffb1a0000000000000000000000000000000000000000000000000000000000000001b4ffffffff6b0000000000000000000000000000000000000000000000209efcffffffff5b000000000000000000e5ffffffce060000000000000000000000000000000000000000000028417decffff96010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004affffffff86000000000000000000000000000000000000000000acffffffffa400000000000000000000000007bdfffffffffa1700000000000000000000000038ffffffffff1c00000000000000000079ccccccccccccccccccccccccccccccccccccccccccf8ffffffffffc600000000000000000000000000000000000000000000000000000000000075ffffffff53000000000000000000000000000059fffff67b070000000000000002a8ffffffff88000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000007dffffff7e000000000000000000000000000000000000000000000000000000000000000013e3fffffff83200000000000000000000000000000000000000001b97fafffffffffffb28000000000000000003fdffffff6400000000000000000000000000000000000000000000000000002df6ffff4f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036ffffffffb4000000000000000000000000000000000000000000acffffffffa400000000000000000000001fbdffffffffff8c0000000000000000000000000038ffffffffff1c00000000000000000098ffffffffffffffffffffffffffffffffffffffffffffffffffffffff260000000000000000000000000000000000000000000000000000000000a8ffffffff240000000000000000000000000005e6ffffffffe378230000000033b8fffffffff71d000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000019fbffffe20300000000000000000000000000000000000000000000000000000000000000003cfcffffffdb0d00000000000000000000000000000000001790f7ffffffffffffb22f00000000000000000001faffffff5a00000000000000000000000000000000000000191c000000000000b1ffffb100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffce000000000000000000000000000000000000000000acffffffffa4000000000000000013479ef5ffffffffffdd0f0000000000000000000000000038ffffffffff1c00000000000000000098ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3b00000000000000000000000000000048741c0000000000000000000011f5ffffffe600000000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000adffffff4d0000000000000000000000000000000000000000000000000000000000000000007affffffffa70000000000000000000000000000001389f5ffffffffffffb232000000000000000000000000d8ffffffa5000000000000000000000000000000000007e9fffd37000000000099ffffd600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000acffffffffedcccccccccccedbeaffffffffffffffffde1e000000000000000000000000000038ffffffffff1c00000000000000000098ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c000000000000000000000000000059fffff67b070000000000000002a8ffffffff88000000000000000000000000000000001ebbffffffffffffffffffffffffffff880000000000000000000070ffffffff7400000000000000000000000000000000004ffffff59c06000000000000000000000000000045ffffffb400000000000000000000000000000000000000000000000000000000000000000001b9ffffffff660000000000000000000000000f82f2ffffffffffffb33300000000000000000000000000008bfffffffe5600000000000000000667a62b0000000000ceffffba0000000002d1ffffd300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffa71700000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e6ffffffffe378230000000033b8fffffffff71d0000000000000000000000000000000000004dc6ffffffffffffffffffffe25a000000000000000000000070ffffffff74000000000000000000000000000000000000b5ffffffa5010000000000000000000000000001dbfffffd1e00000000000000000000000000000000000000000000000000000000000000000016e6fffffff72e0000000000000000000c7beeffffffffffffb434000000000000000000000000000000001ef6fffffffe9c2f010000002477e1ffffd4050000000066ffffff9d1b00199cffffff9600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000acfffffffffffffffffffffffffffffffffff8ab42000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b0000000000000000000000000000000000000000002877b0d8f1fbefd9a75b0800000000000000000000000070ffffffff7400000000000000000000000000000000000023f8ffffff8a000000000000000000000000000075ffffff830000000000000000000000000000000000000000000000000000000000000000000041fdffffffd80b0000000000000974ebffffffffffffb434000000000000000000000000000000000000006effffffffffffeed4d4ecffffffffffff5a0000000002c1fffffffff9fffffffff32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000acfffffffffffffffffffffef8eed9ba9159110000000000000000000000000000000000000038ffffffffff1c0000000000000000000000003898d3f1fcf1d29d4f03000000001dd9feff7800000000000000000000000000000000000000000000001ebbffffffffffffffffffffffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082ffffffff6d0000000000000000000000000014f8ffffe6040000000000000000000000000000000000000000000000000000000000000000000081ffffffffa200000000076de7ffffffffffffb535000000000000000000000000000000000000000000007cfdfffffffffffffffffffffffffe7f0100000000000fbbffffffffffffffea3f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000010aaffffffffffffffffffe05a00000072ffffff7800000885c61000000000004bd54200000000000000000000004dc6ffffffffffffffffffffe25a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009dffffffffd5300000000000000000000000000a5ffffff520000000000000000000000000000000000000000000000000000000000000000000002beffffffff61000000d7fffffffffffaaa360000000000000000000000000000000000000000000000000041cfffffffffffffffffffffbb3600000000000000000151aee4faf1cb7e14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff78000077ffffca0e0000001bfffff53f0000000000000000000000002877b0d8f1fbefd9a75b08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ffffffffff73c0000000000000000000000003dffffffb900000000000000000000000000000000000000002cccccccccccccccccccccccccccccdcfffffffff2170000f0fffffffff17d1700000000000000000000000000000000000000000000000000000000408bc9e5f8f1dbbd792f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072ccccccccd6fffffffff7ccccccccccccccccccccc550000000000000000000000000000000000000000000a4ffffffff4800000000000000000000000000000000000000000000000000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff78000018e8ffffa700000000a5ffffec17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b3ffffffffee29000000000000000000000000d4fffffe230000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff60000087f6fffffffffff99a1f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090ffffffffffffffffffffffffffffffffffffffffffe5000000000000000000000000000000000000000000a4ffffffff48000000000000000000000000000000000000000000000000000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff780000004bffffff550000000ce2ffffb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000090fffff791020000000000059bf9ffff640000000090fffff791020000000000059bf9ffff6400000000000000000000000000000017c2fbffffffe01900000000000000000000006dffffff880000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff740000001993f9fffffffffff9991e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cfffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000a4ffffffff4800000000000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f000043ffffffffde0d000000000000000f95feffffffffff7800000000b8ffffe5070000005cffffff4900000000000000000000000000000000000000000000000000000000000000000000000000000000000002adffffffaa0600000009b5ffffff83000000000002adffffffaa0600000009b5ffffff8300000000000000000000000000000000000000000000000000000000000000000000000ff5ffffea0600000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff7400000000001d99fafffffffffff9971d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001bd3fffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000a4ffffffff480000000000000000000000000000000db5ffffffe64800000067f4ffffff920300000065ffffffff71000000000000000000005bfaffffffff780000000051ffffff5b00000007eeffffb70000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c7ffffffb80a000dc0ffffffa20000000000000009c7ffffffb80a000dc0ffffffa2000000000000000000000000000000000000000000000000000000000000000000000000009dffffff570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000219ffcfffffffffff9961c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4800000000000000000000000000000000028effffffff9724b4fffffffb69000000000070ffffffff4500000000000000000000006dffffffff780000000013ffffffaa00000000b7fffffb0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000014dbffffffc421caffffffbd05000000000000000014dbffffffc421caffffffbd050000000000000000000000000000000000000000000040798047000000000000000000000035ffffffbf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026a5fdfffffffffff8951b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4800000000000000000000000000000000000066fbffffffffffffffef4400000000000051ffffffff55000000000000000000000058ffffffff780000000000f6ffffdc000000009affffff3800000000000077ffff9f00000000117cd6f9e79918000000000000000000000000000000000000000000000024ebfffffffaffffffd30f0000000000000000000024ebfffffffaffffffd30f000000000000000000000000000000000000000000008affffff40000000000000000000000000ccffffff27000000000000000000003b2600000000000000000000000000000000000000000000000000000000000000000000000000002babfefffffffffff8931a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000a4ffffffff480000000000000000000000000000000000000042eeffffffffffdb280000000000000012f6ffffffb1000000000000000000000058ffffffff78000000000afefffff100000000acffffff4d0000000000005bffffed20000c7cf2ffffffffffe31e000000000000000000000000000000000000000000000039f6ffffffffffe51d00000000000000000000000039f6ffffffffffe51d0000000000000000000000000000000000000000000028fdffffd70000000000000000000000000065ffffff8e0000000000000000000074fc9f20000000000000000000000000000000000000000000000000000000000000000000000000000030b2fffffffffffff78a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000a4ffffffff48000000000000000000000000000000000000000025808080807c1300000000000000000092ffffffff850200000000000000000058ffffffff780000000046ffffffeb00000003e7ffffff470000000000001efefffff9d6f4ffffffffffffffffb700000000000000000000000000000000000000000000000052fdfffffff230000000000000000000000000000052fdfffffff230000000000000000000000000000000000000000000000091ffffff70000000000000000000000000000bf1ffffed0800000000000000000074fffffa981b000000000000000000000000000000000000000000000000000000000000000000000000000036b8ffffffffffff4600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000d4d8d8d8d8d8d8d8d8f1ffffffffe3d8d8d8d8d8d8d8d88a0000000000000000000000000000000000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff7800000000adffffffcc00000051ffffffff2800000000000000adfffffffffffffffff5d5f6ffffff250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009effffff611000000000000000000000000000095ffffff5d00000000000000000073fffffffff7901600000000000000000000000000000000000000000000000000000000000000000000000000003bbeffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000fcffffffffffffffffffffffffffffffffffffffffffffa40000000000000000000000000000000000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff7800000026ffffffff91000000c9ffffffeb010000000000000018dbfffffffffff4820f0017dfffff630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060ffffffa00000000000000000000000000000002dffffffc40000000000000000003dfefffffffffff48812000000000000000000000000000000000000000000000000000000000000000000000000000041c4ffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000fcffffffffffffffffffffffffffffffffffffffffffffa400000000000000000000000038190000000000002b2600000000000000005cdcffffffffffffffffffffffffffffffff7800000014d3ffffff370000008efdffff93000000000000000000128ee2f9db83130000000085ffff7e00000000ffffffffffffffffffffffffffffffffffffffffffac000000000000001a73b2d1dfd0b1701700000000000000000000000000000000000000000000000000000000000000c8ffffff3800000000000000000000000000000000c5ffffff2c0000000000000000003cc0fffffffffffff1810e000000000000000000000000000000000000000000000000000000000000000000000000000047ca5c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002affffffffd9000000000000000000000000000000000000000000000000000000000000000000a4ffffffff48000000000000000000000000000000000000000014ebf8790000000006d5fd9800000000000000000249a2edffffffffffffffffffffffffff78000000000143a9b700000000002084e01f00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffac00000000000589f8fffffffffffffff68002000000000000000000000000000000000000000000000000000000002fffffffcf00000000000000000000000000000000005dffffff93000000000000000000000040c0ffffffffffffed790b00000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016ffffffffe9000000000000000000000000000000000000000000000000000000000000000000a4ffffffff480000000000000000000000000000000000000000a5fffff20000000081ffffff160000000000000000000002306593b4d1e3f2f9feffffffff78000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffac0000000006beffffffffffffffffffffffaf0200000000000000000000000000000000000000000000000000000097ffffff68000000000000000000000000000000000008ecfffff00a00000000000000000000000041c1ffffffffffffe972080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f6ffffffff110000000000000000000000000000000000000000000000000000000000000000a4ffffffff48000000000000000000000000000000000000004affffff9b0000002cfaffffbf000000000000000000000000000000000000000058ffffffff78000000000000000000000000000000000000000000000000024592c8ebfaf7e6cd955204000000000000000000cccccccccccccccccccccccccccccccccccccccccc890000000095ffffffdc5b17041861e3ffffff8000000000000000000000000000000000000000000000000000000cf2fffff30d0000000000000000000000000000000000008dffffff62000000000000000000000000000041c2ffffffffffffe56a06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfffffffff4d0000000000000000000000000000000000000000000000c4c8c8c8c8c8c8c8c8ebffffffffd7c8c8c8c8c8c8c8c8800000000000000000000de2ffffec13000002c9fffffa2a000000000000000000000000000000000000000058ffffffff76000000000000000000000000000000000000000000000157daffffffffffffffffffffe46901000000000000000000000000000000000000000000000000000000000000000026fcffffe01400000000001debfffff6180000000000000000000000000000000000000000000000000066ffffff980000000000000000000000000000000000000025feffffca0000000000000000000000000000000042c2ffffffffffffe06304000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007dffffffffae000000000000000000000009a8e6991400000000000000fcffffffffffffffffffffffffffffffffffffffffffffa400000000000000000096ffffff6300000072ffffff870000000000000000000000000000000000000000005fffffffff660000000249030000000000003b14000000000000001ac3ffffffffffffffffffffffffffffb80b0000000000000000000000000000000000000000000000000000000000000089ffffff5e0000000000000073ffffff7600000000000000000000000000000000000000000000000000cdffffff300000000000000000000000000000000000000000bdffffff31000000000000000000000000000000000043c3ffffffffffffda5b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001af9fffffffe4000000000000000000001acffffffed34000000000000fcffffffffffffffffffffffffffffffffffffffffffffa400000000000000003dfeffffc401000021f5ffffdf0900000000000000000000000000000000000000000075ffffffff530000005cffe4811500000010eff9a739000000001ae7ffffffffffffefd6d0e4ffffffffffffbb04000000000000000070ffffffff7400000000000000000000000000000000ccfffffe0f0000000000000022ffffffba00000000000000000000000000000000000000000000000035ffffffc800000000000000000000000000000000000000000055ffffff990000000000000000000000000000000000000043b7fdffffffffffb30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009cffffffffea310000000000000005a2ffffffffe40a0000000000000000000000000001d0ffffffffffff7100000000000000000000000000000008d8fffffb2c000000bcffffff4b00000000000000000000000000000000000000000000a8ffffffff24000000c9ffffffc60000006dfffffffe2400000000bdfffffff18829000000001a7bf4ffffffff6d000000000000000070ffffffff7400000000000000000000000000000000eeffffe4000000000000000000f8ffffdc0000000000000000000000000000000000000000000000009dffffff6000000000000000000000000000000000000000000005e7fffff30d00000000000000000000000000000000000000218ff9ffffffffcc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010dffffffffff88a290000000453cffffffffffe45000000000000000000000000000054ffffffffffffffe90a000000000000000000000000000087ffffff8a00000063ffffffae00000000000000000048741c0000000000000000000011f5ffffffe60000001affffffff90000000bdffffffe5070000000023ebfe9f1600000000000000002cefffffffe9030000000000000070ffffffff7400000000000000000000000000000000fdffffd7000000000000000000ecffffee00000000000000000000000000000000000000000000000ff5ffffee090000000000000000000000000000000000000000000085ffffff68000000000000000000000000000000000029a7fdffffffffffee6c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034eeffffffffffffebd4d6f5ffffffffffff70000000000000000000000000000002d4ffffffc5f7ffffff760000000000000000000000000030fbffffe10b000019effffff31c000000000000000059fffff67b070000000000000002a8ffffffff880000004cfffffffa17000000f0ffffff6e0000000000000818000000000000000000000072ffffffff3d0000000000000070ffffffff7400000000000000000000000000000000f2ffffe0000000000000000000f6ffffe000000000000000000000000000000000000000000000006cffffff9000000000000000000000000000000000000000000000001ffdffffcf00000000000000000000000000000029a7fdfffffffffff1810f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027ddfffffffffffffffffffffffffff8650000000000000000000000000000005affffffff6cb8ffffffec0d000000000000000000000004cdfffffe49000000adffffff6c000000000000000005e6ffffffffe378230000000033b8fffffffff71d00000062ffffffc000000006ffffffff1c0000000000000000000000000000000000000025ffffffff6b0000000000000070ffffffff7400000000000000000000000000000000d5fffffc09000000000000001affffffc30000000000000000000000000000000000000000000000d3ffffff28000000000000000000000000000000000000000000000000b5ffffff3700000000000000000000000027a5fdfffffffffff488120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7bf1ffffffffffffffffffffbb2c00000000000000000000000000000003d9fffffffa1461ffffffff7c00000000000000000000002dffffffce0100000bfdffffea0900000000000000000047efffffffffffffecd7d3edffffffffffff6b000000005dffffff9b00000002fefffff501000000000000000000000000000000000000001dffffffff800000000000000070ffffffff740000000000000000000000000000000095ffffff4f0000000000000065ffffff81000000000000000000000000000000000000000000003bffffffc0000000000000000000000000000000000000000000000000004effffff9e0000000000000000000026a4fdfffffffffff78f16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d529dcde2f7f5e5bd842c00000000000000000000000000000000005fffffffffa9000df0ffffffef100000000000000000000000b5ffffff6900000092ffffff8d000000000000000000001ebbffffffffffffffffffffffffffff8800000000003cffffff9500000000e0fffff2000000000000000000000000000000000000000064ffffffff710000000000000070ffffffff740000000000000000000000000000000036ffffffd10900000000000fe0fffffc2600000000000000000000000000000000000000000000a3ffffff580000000000000000000000000000000000000000000000000003e2fffff5100000000000000025a3fcfffffffffff9951a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ddfffffffe2f000083ffffffff8200000000000000000000001df2fffff01800000bdffffffc3000000000000000000000004dc6ffffffffffffffffffffe25a0000000000000af5ffffba00000000a4ffffff1600000000000000000000000000000000000042f1ffffffff3d0000000000000070ffffffff740000000000000000000000000000000000acffffffc73c02000342d1ffffff970000000000000000000000000000000000000000000012f7ffffe90600000000000000000000000000000000000000000000000000007effffff6d000000000024a1fcfffffffffffb9c1f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065ffffffffb000000012f2fffffff21300000000000000000000006affffffa500000046ffffffc8010000000000000000000000002877b0d8f1fbefd9a75b080000000000000000a4fffff91200000048ffffff680000000000000000000000000000000037a5feffffffffd2010000000000000070ffffffff7400000000000000000000000000000000000ed2fffffffff6e5f6ffffffffc5080000000000000000000000000000000000000000000072ffffff8800000000000000000000000000000000000000000000000000000019fbffffd4000000099bfcfffffffffffda3230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffff3e3d1a76e31000000000000000000000000000000000006e1ffffffff320000000088ffffffff88000000000000000000000001c2ffffff43000000a1ffffff67000000000000000000000000000000000000000000000000000000000000002cfaffff8700000000caffffdc070000000000000000000000054492dffffffffffffff231000000000000000070ffffffff740000000000000000000000000000000000000da4fefffffffffffffffd9a080000000000000000000000000000000000000000000000d8fffffe2200000000000000000000000000000000000000000000000000000000a0ffffff3c00005ffffffffffffeaa2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffd0660600000000000000000000000000006affffffffb4000000000014f4fffffff416000000000000000000000026f7ffffd907000012e8ffffee16000000000000000000000000000000000000000000000000000000000000007efffff9300000002af7ffff860000000000000000003c98edffffffffffffffffdb3400000000000000000070ffffffff7400000000000000000000000000000000000000002d8bccebfaebcc892900000000000000000000000000000000000000000000000041ffffffb800000000000000000000000000000000000000000000000000000000000da8f5ffa3000074ffffffffb02f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffd33300000000000000000000000008e4ffffffff360000000000008cffffffff8e00000000000000000000000079ffffff7e00000055ffffffa20000000000000000000000000000000000000000000000000000000000000004c5ffffdb050000006dfffffe3e00000000000040cdffffffffffffffffffde71090000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8ffffff5000000000000000000000000000000000000000000000000000000000000000000000000074ffffb7350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffd2ccccccccccccccccd9eafffffffffffffffb54000000000000000000000070ffffffffb80000000000000017f6fffffff71a000000000000000000000004cffffff724000000afffffff40000000000000000000000000000000000000000000000000000000000000000fcaffce07000000007ffff33e00000000007cfeffffffffffffffe9993c0100000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016f9ffffe40300000000000000000000000000000000000000000000000000000000000000000000000074be3b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000001755bdfffffffffffa480000000000000000000ae8ffffffff3a000000000000000091ffffffff9300000000000000000000000031fbffffb400000019f0ffffd6020000000000000041cbf3c237000000000057d4f2b828000000000000000000106704000000000000601c000000000064ffffffffffffe88c390200000000000000000000000000000070ffffffff740000000000000000000040b3ecfbecc57a120032bcc84e000040ffffffffffffffffffffffffff5400000000000000000000000078ffffff800000000000000000000000000000000000000c60afddf6f1d8a151040000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000050efffffffffe60d000000000000000075ffffffffbc0000000000000000001af8fffffff91d00000000000000000000000089ffffef0000000065ffffff140000000000002cf8fffffff32300000046ffffffffe31000000000000000000000000000000000000000000000000af0ffffffffdb530400000000000000000000000000000000000070ffffffff7400000000000000000064fefffffffffffff16aa4ffff64000040ffffffffffffffffffffffffff54000000000000000000000001ddfffffc1b00000000000000000000000000000000016ae9ffffffffffffffffda52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000003bf8ffffffff87000000000000000cebffffffff3e0000000000000000000096ffffffff9900000000000000000000000008d9e0510000000000bdec6a0000000000000084ffffffffff7a000000a6ffffffffff56000000000000000000000000000000000000000000000053ffffffffc80d000000000000000000000000000000000000000070ffffffff74000000000000000014f4ffffd7552f4697faffffffff64000040ffffffffffffffffffffffffff54000000000000000000000047ffffffb0000000000000000000000000000000000db0ffffffffffffffffffffffff930400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000008affffffffe6010000000000007affffffffc000000000000000000000001df9fffffffa210000000000000000000000001c05000000000000160b000000000000000080ffffffffff75000000a2ffffffffff5100000000001445000000000000015205000000000000007affffffff3f00000000000000000000000000000000000000000070ffffffff74000000000000000059ffffff310000000036e9ffffff64000033cccccccccccccccccccccccccc420000000000000000000000aeffffff4800000000000000000000000000000004bdffffffffffffffffffffffffffff9e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000001cffffffffff3800000000000feeffffffff430000000000000000000000009affffffff9f00000000000000000000000000000000000000000000000000000000000026f6fffffff01e0000003ffeffffffdf0c0000000040edfd5a000000000cc5ffae0400000000000083ffffffff2100000000000000000000000000000000000000000070ffffffff74000000000000000071fffffe03000000000034ffffff640000000000000000000000000000000000000000000000000000001afbffffde010000000000000000000000000000008dffffffffffffffffffffffffffffffff6b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000dbffffffff64000000000080ffffffffc40000000000000000000000000021fbfffffffc260000000000000000000000000000000000000000000000000000000000003bc7f1be31000000000051d1f0b423000000000057fffffc4a0000000febffffa300000000000066ffffffff5900000000000000000000000000000000000000000070ffffffff74000000000000000053ffffff2e000000000014ffffff640000000000000000000000000000000000000000000000000000007effffff7800000000000000000000000000000027fbffffffffffffffffffffffffffffffffee130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000beffffffff7d0000000011f1ffffffff4700000000000000000000000000009fffffffffa50000000000000000000253a7def6f1d6953b000000000000000000000000000000000000000000000000000000000000000000a4ffffe8130000004affffff5700000000001fffffffffe01a000000000000000027917500000000000000000070ffffffff74000000000000000008e4ffffd72d0000000014ffffff64000040ffffffffffffffffffffffffff5400000000000000000002e2fffff91600000000000000000000000000000099ffffffffffffffffffffffffffffffffffff790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000b8ffffffff890000000085ffffffffc800000000000000000000000000000024fcfffffffd2b0000000000000036d1ffffffffffffffffb41a0000000000000000000000000000000000000000000000000000000000000013edffffa400000000a5ffffec140000000000b0ffffffffe6660f0000000746a8fcffff58000000000000000070ffffffff7400000000000000000036eafffffec07c52373dffffff64000040ffffffffffffffffffffffffff540000000000000000004dffffffa800000000000000000000000000000003eaffffffffffffffffffffffffffffffffffffcc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000d2ffffffff7500000014f3ffffffff4900000000000000000000000000000000a1ffffffffab00000000000055f8ffffffffffffffffffffe52d0000000000114100000000000009490000000000000000000000000000000082fffffe2800000026ffffff8200000000001febfffffffffffdddd0dbfbffffffffffd8010000000000000070ffffffff74000000000000000000001b99f9ffffffffffffffffff64000040ffffffffffffffffffffffffff54000000000000000000b4ffffff4000000000000000000000000000000022fffffffffffffffffffffffffffffffffffffffd0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000016fdffffffff490000008bfffffff783000000000000000000000000000000000010c4fdfffffe2f0000000039f9fffffffff4d4d9faffffffffe11600000060f2f7270000000045e8ff430000000000000000000000000000002bffffff8500000000cfffffe000000000000030e7ffffffffffffffffffffffffffd524000000000000000070ffffffff740000000000000000000000000e5895c0e2effaffffff64000033cccccccccccccccccccccccccc4200000000000000001efdffffd7000000000000000000000000000000003bffffffffffffffffffffffffffffffffffffffff1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000087fffffffff50c00000000000000000000000000000000000000000000000000000000000000000000000003d8ffffffd9500500000e6df0ffffffa2000000d2ffffc301000000aeffffde0b000000000000000000000000000005fcffffc500000000a7ffffff21000000000000129ffaffffffffffffffffffec750900000000000000000070ffffffff7400000000000000000000000000000000000014ffffff630000000000000000000000000000000000000000000000000083ffffff70000000000000000000000000000000003bffffffffffffffffffffffffffffffffffffffff1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000044f9ffffffff8b000000000000000000000000000000000000000000000000000000000000000000000000005dffffffc60d00000000000028ebfffffd26000079ffffff6b00000055ffffff8f000000000000000000000000000000f8ffffe9000000009cffffff4500000000000000001a71b0ddf0f9e6cf9c520b000000000000000000000070ffffffff7400000000000000000000000000000000000028ffffff5300000000000000000000000000000000000000000000000004e6fffff6110000000000000000000000000000000020fffffffffffffffffffffffffffffffffffffffc0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000016cf5ffffffffd60d00000000000000000000035aacd9f4f1d6b05b030000000000000000000000000000000000b3fffff61d000000000000000053ffffff7a000006d7fffff21e000000b9fffffd380000000000000000000000000021fffffff200000000c5ffffff4e00000000000000000000000000000000000000000000000000000000000070ffffffff7400000000000000000000203300000000000065ffffff29000004b9f47500000000000097f59900000000000000000053ffffffa0000000000000000000000000000000000002e7ffffffffffffffffffffffffffffffffffffc90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000010d1d4881deffffffffffd620000000000000000000000000e2ffffffffffffffc60f00000000000000000000000000000000eeffffa700000000000000000001e6ffffb600000041ffffffb700000024f8ffffd40600000000000000000000000073ffffffe00000001afcffffff3c00000000000000000000000000000000000000000000000000000000000070ffffffff740000000000000000001ef2ffc8570900044eecffffd700000048ffffee000000000020ffffff170000000000000000baffffff3900000000000000000000000000000000000096ffffffffffffffffffffffffffffffffffff760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffffffffffc930e0000000000000000000000000070ac593a4fc2ffffff9700000000000000000000000000000008ffffff7700000000000000000000b8ffffcf00000000a4ffffff5d00000080ffffff81000000000000000000000008e4ffffffb200000090fffffffe100000fcffffffe8000000000000000000000000000000000000000000000070ffffffff7400000000000000000055fdfffffffbeafaffffffff5000000072ffffff11000000004affffff390000000000000023feffffd00000000000000000000000000000000000000024faffffffffffffffffffffffffffffffffec100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffde8723000000000000000000000000000000000000000014ffffffd600000000000000000000000000000008ffffff7800000000000000000000b9ffffcf0000000017efffffec16000007dbfffffa2d0000000000000000000032ffffffff68000000d6ffffffc4000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000045dbfffffffffffffffd71000000008dffffff2c0000000065ffffff540000000000000089ffffff69000000000000000000000000000000000000000089ffffffffffffffffffffffffffffffff67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffe971a0000000000000000000000000000000000000000000049ffffffbe00000000000000000000000000000000eeffffaa00000000000000000002e9ffffb600000000006affffffa900000046ffffffca030000000000000000000058c7fff0100000002aa2f7ff5c000000fcffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000358a4dbf1f8de9d2d0000000000a8ffffff470000000080ffffff6f00000000000006eaffffe70c000000000000000000000000000000000000000004baffffffffffffffffffffffffffff9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffd2ccccccccccccd1dff5fffffffffff99211000000000000000000000000000000000f426db0fcfffffb4300000000000000000000000000000000b2fffff820000000000000000057ffffff79000000000002caffffff4f000000a9ffffff730000000000000000000000002e4b000000000000116502000000fcffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2ffffff61000000009affffff8900000000000059fffccd35000000000000000000000000000000000000000000000badffffffffffffffffffffffff900300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000022a73d9ffffffffe0340000000000000000000000000000003bffffffffffc63b00000000000000000000000000000000005effffffc90e0000000000002aedfffffe2700000000000032fcffffe50f000019f0fffff62300000000000000000000000000000000000000000000000000fcffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0ffffff6f00000000a8ffffff97000000000000000000000000000000000000000000000000000000000000000000000169e9ffffffffffffffffd950000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000479fdfffffff032000000000000000000000000000001e6ffff8b250000000000000000000000000000000000000004daffffffdb540700001070f2ffffffa50000000000000000b6ffffff5100000092ffffff7500000000000000000000000000000000000000000000000000fcffffffe80000000000000000000000000000000000000041cbf3c237000000000057d4f2b82800000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff980000000000000000000000000000000000000000000000000000000000000000000000000c5faedcf5f0d7a0510400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000067ffffffffdd0b000000000000000000000000000097ffff7a0000000000000000000000000000000000000000003cfafffffffff5d5dafbffffffffe318000000000000004affffffd20500002bfaffffe91200000041cbf3c237000000000057d4f2b82800000000000000fcffffffe80000000000000000000000000000000000002cf8fffffff32300000046ffffffffe310000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff740000001471bde1f9f4d599350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000c2ffffffff7600000000000000000000001470aeeafffff7cda46d1b00000000000000000000000000000000000059f8ffffffffffffffffffffe62f0000000000000009defffffc35000001c3ffffff560000002cf8fffffff32300000046ffffffffe310000000000000fcffffffe800000000000000000000000000000000000084ffffffffff7a000000a6ffffffffff56000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff7400000030ffffffffffffffff8600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000060ffffffffd90000000000000000001199f7fffffffffffffffffffec03b000000000000000000000000000000000038d2ffffffffffffffffb51b000000000000000085ffffff8c00000061ffffffb00000000084ffffffffff7a000000a6ffffffffff56000000000000fcffffffe800000000000000000000000000000000000080ffffffffff75000000a2ffffffffff51000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff7400000000d0ac533b63e5ffffff49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000028ffffffffff170000000000000041e5ffffffffffffffffffffffffffffa50b000000000000000000000000000000000253a6ddf6f0d5943b00000000000000000028f9ffffdc09000012ebfffff01a0000000080ffffffffff75000000a2ffffffffff51000000000000fcffffffe800000000000000000000000000000000000026f6fffffff01e0000003ffeffffffdf0c000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff740000000000000000005cffffff90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000016ffffffffff3200000000000043f7ffffffffffffecd0c5d5f9ffffffffffc60f000000000000000000000000000000000000000000000000000000000000000000befffffe410000009bffffff64000000000026f6fffffff01e0000003ffeffffffdf0c000000000000fcffffffe8000000000000000000000000000000000000003bc7f1be31000000000051d1f0b42300000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff7400000000000000000079ffffff83000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000025ffffffffff2e000000000027f5fffffffffe9d33000000000850c6ffffffff5800000000000000000000000000000000000000000000000000000000000000005cffffff9a00000039feffffbd000000000000003bc7f1be31000000000051d1f0b42300000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff7400000000000017499ffdfffff626000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000004dffffffffff170000000001c2fffffffff24100000000000000000065f6ff9a0000000000000000000044ffff2800000000000000000000000000000000000010e8ffffe40f000004d1fffff5220000000000000000000000000000000000000000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000070ffffffff74000000000088ffffffffffdb3d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000009effffffffea010000000056fffffffffd3e00000000000000000000002459040000000000000000000044ffff2800000000000000000000000000000000000091ffffff4e0000006dffffff72000000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000004ffffff59c06000000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000070ffffffff74000000000045fffffb984b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000031fcffffffff9e0000000000c3ffffffff900000000000000000000000000000000000000000000000000044ffff28000000000000000000000000000000000000d0ffffa800000000acffffc9020000000000000074ffffffffffffffffffffffffffffff54000000000000fcffffffe8000000000000000000000000000000b5ffffffa5010000000000000000000000000000000070ffffffff7400000000000000000000000000003eddffffaa00000000000000000000000070ffffffff74000000000006f1ffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000003ae9fffffffffe360000000027fffffffffb180000000000000000000000000000000000000031470000000044ffff28000000005b290000000000000000000000003fd5ec15000000002bc5f92c000000000000000074ffffffffffffffffffffffffffffff54000000000000fcffffffe800000000000000000000000000000023f8ffffff8a0000000000000000000000000000000070ffffffff740000000000000000000000000034f4fffff31b00000000000000000000000070ffffffff74000000000000abffff6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000001751acfeffffffffff9c000000000068ffffffffb20000000000000000000000000000000000000001c8ffb425000044ffff28000033c5ffb9000000000000000000000000000120000000000000002100000000000000000074ffffffffffffffffffffffffffffff54000000000000fcffffffe80000000000000000000000000000000082ffffffff6d00000000000000000000000000000070ffffffff7400000000000000000000000023e9ffffff730000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffd2cccccccccccccedbecffffffffffffffffb7080000000000a3ffffffff73000000000000000000000000000000000000001ee2fffffa8c0e41ffff24179dfeffffd412000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcfffffff60f00000000000000000000000000000009dffffffffd53000000000000000000000000000070ffffffff74000000000000000000000015dbffffffd3040000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffffffffb8f07000000000000ccffffffff3f00000000000000000000000000000000000000000a82f7ffffe669fffa63f0fffff06f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffffff7c000000000000000000000000000000004ffffffffff73c0000000000000000000000000070ffffffff74000000000000000000000bcafffffffe3d000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffff2a12c0000000000000000deffffffff270000000000000000000000000000000000000000000020aefffff6fef3fdfffe9c15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcfffffffff31c00000000000000000000000000000000b3ffffffffee2900000000000000000000000070ffffffff7400000000000000000004b5ffffffffa000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffdf0e3d4ae7f4d0900000000000000000000efffffffff170000000000000000000000000000000000000000000000003eacf7fffff7a6320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffffffffc40700000000000000000000000000000017c2fbffffffe019000000000000000000000070ffffffff740000000000000000009dffffffffee1600000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeffffffff170000000000000000000000000000000000000000000000097cebffffffffe56e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcfffffff4ffffb91200000000000000000000000000000000000000000000000000000000000000000070ffffffff74000000000000000082fffffffee1470000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dbffffffff260000000000000000000000000000000000000000000055e1ffffddf9f0eaffffd645000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff9cdaffffe7782d0b061c5373080000000000000000000000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003898d3f1fcf1d29d4f03000000001dd9feff780000000000000000c8ffffffff4000000000000000000000000000000000000000002cbeffffffb547ffff35c5ffffffb12200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff8746ffffffffffffffffffff59000088ffffffffffffffffff9800000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010aaffffffffffffffffffe05a00000072ffffff7800000000000000009cffffffff720000000000000000000000000000000000000026fcffffda4c0042ffff26015ce4fffff10e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff75008fffffffffffffffffff83000088ffffffffffffffffff9800000000000000000000000070ffffffff740000000000000000000000000000003819000000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff7800000000000000005fffffffffb40000000000000000000000000000000000000000b1f27506000044ffff2800000b83f78700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff640003a9ffffffffffffffffaa00007bffffffffffffffffff9800000000000000000000000070ffffffff74000000000000000000000000000014ebf8790000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff7800000000000000001ffefffffffc19000000000000000000000000000000000000001c170000000044ffff2800000000200c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff4e00000284fcffffffffffffd0000018b4cccccccce7ffffff9800000000000000000000000070ffffffff740000000000000000000000000000a5fffff20000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff78000000000000000000b5ffffffff970000000000000000000000000000000000000000000000000044ffff2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffd91000000000268fd3f3f8e5c47c000000000000000088ffffff9800000000000000000000000070ffffffff74000000000000000000000000004affffff9b0000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043ffffffffde0d000000000000000f95feffffffffff7800000000000000000042fffffffffe4800000000000000000000000000000000000000000000000044ffff28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff740000000000000000000000000de2ffffec130000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065ffffffff71000000000000000000005bfaffffffff7800000000000000000000acfffffffff7540000000000000000003fc6b3090000000000000000000044ffff28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff7400000000000000000000000096ffffff63000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff4500000000000000000000006dffffffff780000000000000000000012e3ffffffffffb44c07000000094bb6ffffff9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff7400000000000000000000003dfeffffc401000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051ffffffff55000000000000000000000058ffffffff7800000000000000000000002ae2fffffffffffffae3d0dcfbffffffffffed1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff740000000000000000000008d8fffffb2c00000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012f6ffffffb1000000000000000000000058ffffffff780000000000000000000000001cccffffffffffffffffffffffffffffd4230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff740000000000000000000087ffffff8a0000000000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092ffffffff850200000000000000000058ffffffff78000000000000000000000000000260e4ffffffffffffffffffffe96e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000000000000000000000000000000000030fbffffe10b0000000000000000000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff78000000000000000000000000000000054c93c7e9f8f7e2cc964c090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000000000000000000000000000004cdfffffe49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000000000000000000000000000000002dffffffce01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cdcffffffffffffffffffffffffffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000000000000000004ffffff59c06000000000000000000b5ffffff6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000249a2edffffffffffffffffffffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000000b5ffffffa50100000000000000001df2fffff0180000000000000000000000000000000000003eddffffaa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000000000000000000023f8ffffff8a0000000000000000006affffffa5000000000000000000000000000000000034f4fffff31b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058ffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000082ffffffff6d000000000000000001c2ffffff4300000000000000000000000000000023e9ffffff7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058ffffffff760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000009dffffffffd53000000000000000026f7ffffd9070000000000000000000000000015dbffffffd3040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fffffffff660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000000000000000000000004ffffffffff73c000000000000000079ffffff7e0000000000000000000000000bcafffffffe3d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075ffffffff530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000000000000b3ffffffffee290000000000000004cffffff7240000000000000000000004b5ffffffffa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8ffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000000000000000000000000017c2fbffffffe0190000000000000031fbffffb4000000000000000000009dffffffffee1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048741c0000000000000000000011f5ffffffe6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000000000000000000000000000000000000000089ffffef00000000000000000082fffffffee14700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059fffff67b070000000000000002a8ffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000000000000000000000000000000000000000008d9e05100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e6ffffffffe378230000000033b8fffffffff71d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000001141000000000000000000000000000000000000000000000000000000001c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000060f2f72700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ebbffffffffffffffffffffffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000d2ffffc3010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004dc6ffffffffffffffffffffe25a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000079ffffff6b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002877b0d8f1fbefd9a75b0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000006d7fffff21e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000041ffffffb700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000a4ffffff5d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000017efffffec160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000006affffffa90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000002caffffff4f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000032fcffffe50f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000b6ffffff51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000004affffffd205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000009defffffc3500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000085ffffff8c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000028f9ffffdc090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000befffffe41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000005cffffff9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000010e8ffffe40f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000091ffffff4e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000d0ffffa8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800003fd5ec15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ab5cccccccce7ffffff9800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffffffffffffff98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffffffffffffffff98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffffffffffffffff9800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+ m_StreamData:
+ offset: 0
+ size: 0
+ path:
+--- !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: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
+ m_Name: Lato-Regular
+ m_EditorClassIdentifier:
+ hashCode: 0
+ material: {fileID: 7453642021753212536}
+ materialHashCode: 0
+ m_Version: 1.1.0
+ m_SourceFontFileGUID: 49342641ea2b7e6429da3245744bb92b
+ m_SourceFontFile_EditorRef: {fileID: 0}
+ m_SourceFontFile: {fileID: 0}
+ m_AtlasPopulationMode: 0
+ m_FaceInfo:
+ m_FamilyName: Lato
+ m_StyleName: Regular
+ m_PointSize: 55
+ m_Scale: 1
+ m_LineHeight: 66
+ m_AscentLine: 54.285
+ m_CapLine: 39
+ m_MeanLine: 28
+ m_Baseline: 0
+ m_DescentLine: -11.715
+ m_SuperscriptOffset: 54.285
+ m_SuperscriptSize: 0.5
+ m_SubscriptOffset: -11.715
+ m_SubscriptSize: 0.5
+ m_UnderlineOffset: -5.5
+ m_UnderlineThickness: 3.3
+ m_StrikethroughOffset: 11.2
+ m_StrikethroughThickness: 3.3
+ m_TabWidth: 11
+ m_GlyphTable:
+ - m_Index: 3
+ m_Metrics:
+ m_Width: 0
+ m_Height: 0
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 0
+ m_HorizontalAdvance: 11
+ m_GlyphRect:
+ m_X: 0
+ m_Y: 0
+ m_Width: 0
+ m_Height: 0
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 4
+ m_Metrics:
+ m_Width: 7
+ m_Height: 39
+ m_HorizontalBearingX: 6
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 19
+ m_GlyphRect:
+ m_X: 77
+ m_Y: 174
+ m_Width: 7
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 5
+ m_Metrics:
+ m_Width: 14
+ m_Height: 14
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 22
+ m_GlyphRect:
+ m_X: 188
+ m_Y: 388
+ m_Width: 14
+ m_Height: 14
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 6
+ m_Metrics:
+ m_Width: 30
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 249
+ m_Width: 30
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 7
+ m_Metrics:
+ m_Width: 28
+ m_Height: 52
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 45
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 239
+ m_Y: 230
+ m_Width: 28
+ m_Height: 52
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 8
+ m_Metrics:
+ m_Width: 41
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 43
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 118
+ m_Width: 41
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 9
+ m_Metrics:
+ m_Width: 37
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 39
+ m_GlyphRect:
+ m_X: 466
+ m_Y: 1
+ m_Width: 37
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 10
+ m_Metrics:
+ m_Width: 5
+ m_Height: 14
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 13
+ m_GlyphRect:
+ m_X: 35
+ m_Y: 208
+ m_Width: 5
+ m_Height: 14
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 11
+ m_Metrics:
+ m_Width: 12
+ m_Height: 51
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 43
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 550
+ m_Y: 118
+ m_Width: 12
+ m_Height: 51
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 12
+ m_Metrics:
+ m_Width: 11
+ m_Height: 51
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 43
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 367
+ m_Y: 109
+ m_Width: 11
+ m_Height: 51
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 13
+ m_Metrics:
+ m_Width: 18
+ m_Height: 18
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 22
+ m_GlyphRect:
+ m_X: 57
+ m_Y: 402
+ m_Width: 18
+ m_Height: 18
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 14
+ m_Metrics:
+ m_Width: 28
+ m_Height: 27
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 32
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 625
+ m_Y: 1
+ m_Width: 28
+ m_Height: 27
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 15
+ m_Metrics:
+ m_Width: 8
+ m_Height: 14
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 6
+ m_HorizontalAdvance: 12
+ m_GlyphRect:
+ m_X: 120
+ m_Y: 298
+ m_Width: 8
+ m_Height: 14
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 16
+ m_Metrics:
+ m_Width: 15
+ m_Height: 4
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 18
+ m_HorizontalAdvance: 19
+ m_GlyphRect:
+ m_X: 188
+ m_Y: 376
+ m_Width: 15
+ m_Height: 4
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 17
+ m_Metrics:
+ m_Width: 8
+ m_Height: 7
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 7
+ m_HorizontalAdvance: 12
+ m_GlyphRect:
+ m_X: 119
+ m_Y: 314
+ m_Width: 8
+ m_Height: 7
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 18
+ m_Metrics:
+ m_Width: 22
+ m_Height: 43
+ m_HorizontalBearingX: -1
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 21
+ m_GlyphRect:
+ m_X: 233
+ m_Y: 331
+ m_Width: 22
+ m_Height: 43
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 19
+ m_Metrics:
+ m_Width: 30
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 33
+ m_Y: 265
+ m_Width: 30
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 20
+ m_Metrics:
+ m_Width: 25
+ m_Height: 39
+ m_HorizontalBearingX: 5
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 465
+ m_Y: 164
+ m_Width: 25
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 21
+ m_Metrics:
+ m_Width: 28
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 465
+ m_Y: 42
+ m_Width: 28
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 22
+ m_Metrics:
+ m_Width: 28
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 420
+ m_Y: 72
+ m_Width: 28
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 23
+ m_Metrics:
+ m_Width: 30
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 290
+ m_Width: 30
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 24
+ m_Metrics:
+ m_Width: 27
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 655
+ m_Y: 29
+ m_Width: 27
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 25
+ m_Metrics:
+ m_Width: 28
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 380
+ m_Y: 99
+ m_Width: 28
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 26
+ m_Metrics:
+ m_Width: 27
+ m_Height: 39
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 625
+ m_Y: 30
+ m_Width: 27
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 27
+ m_Metrics:
+ m_Width: 28
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 419
+ m_Y: 113
+ m_Width: 28
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 28
+ m_Metrics:
+ m_Width: 26
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 592
+ m_Y: 114
+ m_Width: 26
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 29
+ m_Metrics:
+ m_Width: 8
+ m_Height: 27
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 27
+ m_HorizontalAdvance: 14
+ m_GlyphRect:
+ m_X: 120
+ m_Y: 252
+ m_Width: 8
+ m_Height: 27
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 30
+ m_Metrics:
+ m_Width: 8
+ m_Height: 35
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 27
+ m_HorizontalAdvance: 14
+ m_GlyphRect:
+ m_X: 121
+ m_Y: 205
+ m_Width: 8
+ m_Height: 35
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 31
+ m_Metrics:
+ m_Width: 22
+ m_Height: 25
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 31
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 288
+ m_Y: 334
+ m_Width: 22
+ m_Height: 25
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 32
+ m_Metrics:
+ m_Width: 24
+ m_Height: 13
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 25
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 292
+ m_Y: 289
+ m_Width: 24
+ m_Height: 13
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 33
+ m_Metrics:
+ m_Width: 22
+ m_Height: 25
+ m_HorizontalBearingX: 6
+ m_HorizontalBearingY: 31
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 257
+ m_Y: 352
+ m_Width: 22
+ m_Height: 25
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 34
+ m_Metrics:
+ m_Width: 21
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 22
+ m_GlyphRect:
+ m_X: 269
+ m_Y: 241
+ m_Width: 21
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 35
+ m_Metrics:
+ m_Width: 42
+ m_Height: 44
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 37
+ m_HorizontalAdvance: 45
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 42
+ m_Width: 42
+ m_Height: 44
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 36
+ m_Metrics:
+ m_Width: 38
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 215
+ m_Y: 52
+ m_Width: 38
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 37
+ m_Metrics:
+ m_Width: 29
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 36
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 372
+ m_Width: 29
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 38
+ m_Metrics:
+ m_Width: 34
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 38
+ m_GlyphRect:
+ m_X: 168
+ m_Y: 183
+ m_Width: 34
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 39
+ m_Metrics:
+ m_Width: 35
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 41
+ m_GlyphRect:
+ m_X: 212
+ m_Y: 134
+ m_Width: 35
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 40
+ m_Metrics:
+ m_Width: 26
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 494
+ m_Y: 91
+ m_Width: 26
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 41
+ m_Metrics:
+ m_Width: 26
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 465
+ m_Y: 123
+ m_Width: 26
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 42
+ m_Metrics:
+ m_Width: 35
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 40
+ m_GlyphRect:
+ m_X: 172
+ m_Y: 142
+ m_Width: 35
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 43
+ m_Metrics:
+ m_Width: 33
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 42
+ m_GlyphRect:
+ m_X: 131
+ m_Y: 186
+ m_Width: 33
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 44
+ m_Metrics:
+ m_Width: 7
+ m_Height: 39
+ m_HorizontalBearingX: 5
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 77
+ m_Y: 215
+ m_Width: 7
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 45
+ m_Metrics:
+ m_Width: 19
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 24
+ m_GlyphRect:
+ m_X: 359
+ m_Y: 212
+ m_Width: 19
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 46
+ m_Metrics:
+ m_Width: 32
+ m_Height: 39
+ m_HorizontalBearingX: 5
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 130
+ m_Y: 278
+ m_Width: 32
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 47
+ m_Metrics:
+ m_Width: 24
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 435
+ m_Y: 217
+ m_Width: 24
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 48
+ m_Metrics:
+ m_Width: 42
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 51
+ m_GlyphRect:
+ m_X: 45
+ m_Y: 42
+ m_Width: 42
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 49
+ m_Metrics:
+ m_Width: 33
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 42
+ m_GlyphRect:
+ m_X: 166
+ m_Y: 224
+ m_Width: 33
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 50
+ m_Metrics:
+ m_Width: 40
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 302
+ m_Y: 1
+ m_Width: 40
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 51
+ m_Metrics:
+ m_Width: 27
+ m_Height: 39
+ m_HorizontalBearingX: 5
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 34
+ m_GlyphRect:
+ m_X: 565
+ m_Y: 31
+ m_Width: 27
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 52
+ m_Metrics:
+ m_Width: 42
+ m_Height: 47
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 174
+ m_Y: 1
+ m_Width: 42
+ m_Height: 47
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 53
+ m_Metrics:
+ m_Width: 30
+ m_Height: 39
+ m_HorizontalBearingX: 5
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 35
+ m_GlyphRect:
+ m_X: 33
+ m_Y: 306
+ m_Width: 30
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 54
+ m_Metrics:
+ m_Width: 27
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 29
+ m_GlyphRect:
+ m_X: 535
+ m_Y: 34
+ m_Width: 27
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 55
+ m_Metrics:
+ m_Width: 32
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 208
+ m_Width: 32
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 56
+ m_Metrics:
+ m_Width: 32
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 40
+ m_GlyphRect:
+ m_X: 35
+ m_Y: 224
+ m_Width: 32
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 57
+ m_Metrics:
+ m_Width: 38
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 215
+ m_Y: 93
+ m_Width: 38
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 58
+ m_Metrics:
+ m_Width: 56
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 56
+ m_GlyphRect:
+ m_X: 64
+ m_Y: 1
+ m_Width: 56
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 59
+ m_Metrics:
+ m_Width: 35
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 35
+ m_GlyphRect:
+ m_X: 131
+ m_Y: 145
+ m_Width: 35
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 60
+ m_Metrics:
+ m_Width: 35
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 35
+ m_GlyphRect:
+ m_X: 249
+ m_Y: 148
+ m_Width: 35
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 61
+ m_Metrics:
+ m_Width: 31
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 34
+ m_GlyphRect:
+ m_X: 86
+ m_Y: 303
+ m_Width: 31
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 62
+ m_Metrics:
+ m_Width: 12
+ m_Height: 50
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 344
+ m_Y: 252
+ m_Width: 12
+ m_Height: 50
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 63
+ m_Metrics:
+ m_Width: 22
+ m_Height: 43
+ m_HorizontalBearingX: -1
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 21
+ m_GlyphRect:
+ m_X: 208
+ m_Y: 351
+ m_Width: 22
+ m_Height: 43
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 64
+ m_Metrics:
+ m_Width: 11
+ m_Height: 50
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 148
+ m_Y: 413
+ m_Width: 11
+ m_Height: 50
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 65
+ m_Metrics:
+ m_Width: 24
+ m_Height: 18
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 292
+ m_Y: 269
+ m_Width: 24
+ m_Height: 18
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 66
+ m_Metrics:
+ m_Width: 22
+ m_Height: 4
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: -4
+ m_HorizontalAdvance: 22
+ m_GlyphRect:
+ m_X: 154
+ m_Y: 357
+ m_Width: 22
+ m_Height: 4
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 67
+ m_Metrics:
+ m_Width: 11
+ m_Height: 8
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 185
+ m_Y: 404
+ m_Width: 11
+ m_Height: 8
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 68
+ m_Metrics:
+ m_Width: 23
+ m_Height: 28
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 413
+ m_Width: 23
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 69
+ m_Metrics:
+ m_Width: 25
+ m_Height: 40
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 493
+ m_Y: 132
+ m_Width: 25
+ m_Height: 40
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 70
+ m_Metrics:
+ m_Width: 23
+ m_Height: 28
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 26
+ m_GlyphRect:
+ m_X: 292
+ m_Y: 304
+ m_Width: 23
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 71
+ m_Metrics:
+ m_Width: 26
+ m_Height: 40
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 592
+ m_Y: 72
+ m_Width: 26
+ m_Height: 40
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 72
+ m_Metrics:
+ m_Width: 25
+ m_Height: 28
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 29
+ m_GlyphRect:
+ m_X: 465
+ m_Y: 205
+ m_Width: 25
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 73
+ m_Metrics:
+ m_Width: 19
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 19
+ m_GlyphRect:
+ m_X: 358
+ m_Y: 253
+ m_Width: 19
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 74
+ m_Metrics:
+ m_Width: 27
+ m_Height: 38
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 465
+ m_Y: 83
+ m_Width: 27
+ m_Height: 38
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 75
+ m_Metrics:
+ m_Width: 24
+ m_Height: 40
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 519
+ m_Y: 186
+ m_Width: 24
+ m_Height: 40
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 76
+ m_Metrics:
+ m_Width: 8
+ m_Height: 40
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 14
+ m_GlyphRect:
+ m_X: 121
+ m_Y: 163
+ m_Width: 8
+ m_Height: 40
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 77
+ m_Metrics:
+ m_Width: 13
+ m_Height: 50
+ m_HorizontalBearingX: -2
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 14
+ m_GlyphRect:
+ m_X: 450
+ m_Y: 72
+ m_Width: 13
+ m_Height: 50
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 78
+ m_Metrics:
+ m_Width: 24
+ m_Height: 40
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 29
+ m_GlyphRect:
+ m_X: 492
+ m_Y: 213
+ m_Width: 24
+ m_Height: 40
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 79
+ m_Metrics:
+ m_Width: 6
+ m_Height: 40
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 14
+ m_GlyphRect:
+ m_X: 292
+ m_Y: 97
+ m_Width: 6
+ m_Height: 40
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 80
+ m_Metrics:
+ m_Width: 38
+ m_Height: 28
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 45
+ m_GlyphRect:
+ m_X: 426
+ m_Y: 1
+ m_Width: 38
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 81
+ m_Metrics:
+ m_Width: 24
+ m_Height: 28
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 318
+ m_Y: 230
+ m_Width: 24
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 82
+ m_Metrics:
+ m_Width: 28
+ m_Height: 28
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 565
+ m_Y: 1
+ m_Width: 28
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 83
+ m_Metrics:
+ m_Width: 25
+ m_Height: 37
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 30
+ m_GlyphRect:
+ m_X: 492
+ m_Y: 174
+ m_Width: 25
+ m_Height: 37
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 84
+ m_Metrics:
+ m_Width: 26
+ m_Height: 37
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 410
+ m_Y: 154
+ m_Width: 26
+ m_Height: 37
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 85
+ m_Metrics:
+ m_Width: 17
+ m_Height: 28
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 22
+ m_GlyphRect:
+ m_X: 129
+ m_Y: 390
+ m_Width: 17
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 86
+ m_Metrics:
+ m_Width: 21
+ m_Height: 28
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 24
+ m_GlyphRect:
+ m_X: 129
+ m_Y: 360
+ m_Width: 21
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 87
+ m_Metrics:
+ m_Width: 19
+ m_Height: 37
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 37
+ m_HorizontalAdvance: 21
+ m_GlyphRect:
+ m_X: 358
+ m_Y: 294
+ m_Width: 19
+ m_Height: 37
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 88
+ m_Metrics:
+ m_Width: 24
+ m_Height: 28
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 318
+ m_Y: 260
+ m_Width: 24
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 89
+ m_Metrics:
+ m_Width: 28
+ m_Height: 28
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 595
+ m_Y: 1
+ m_Width: 28
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 90
+ m_Metrics:
+ m_Width: 42
+ m_Height: 28
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 42
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 88
+ m_Width: 42
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 91
+ m_Metrics:
+ m_Width: 27
+ m_Height: 28
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 714
+ m_Y: 1
+ m_Width: 27
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 92
+ m_Metrics:
+ m_Width: 28
+ m_Height: 37
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 329
+ m_Y: 191
+ m_Width: 28
+ m_Height: 37
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 93
+ m_Metrics:
+ m_Width: 23
+ m_Height: 28
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 25
+ m_GlyphRect:
+ m_X: 263
+ m_Y: 322
+ m_Width: 23
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 94
+ m_Metrics:
+ m_Width: 14
+ m_Height: 50
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 276
+ m_Y: 189
+ m_Width: 14
+ m_Height: 50
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 95
+ m_Metrics:
+ m_Width: 5
+ m_Height: 51
+ m_HorizontalBearingX: 6
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 292
+ m_Y: 139
+ m_Width: 5
+ m_Height: 51
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 96
+ m_Metrics:
+ m_Width: 14
+ m_Height: 50
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 449
+ m_Y: 124
+ m_Width: 14
+ m_Height: 50
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 97
+ m_Metrics:
+ m_Width: 26
+ m_Height: 11
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 22
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 564
+ m_Y: 122
+ m_Width: 26
+ m_Height: 11
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 98
+ m_Metrics:
+ m_Width: 0
+ m_Height: 0
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 0
+ m_HorizontalAdvance: 11
+ m_GlyphRect:
+ m_X: 0
+ m_Y: 0
+ m_Width: 0
+ m_Height: 0
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 99
+ m_Metrics:
+ m_Width: 7
+ m_Height: 37
+ m_HorizontalBearingX: 6
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 19
+ m_GlyphRect:
+ m_X: 199
+ m_Y: 277
+ m_Width: 7
+ m_Height: 37
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 100
+ m_Metrics:
+ m_Width: 26
+ m_Height: 41
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 35
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 533
+ m_Y: 75
+ m_Width: 26
+ m_Height: 41
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 101
+ m_Metrics:
+ m_Width: 30
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 331
+ m_Width: 30
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 102
+ m_Metrics:
+ m_Width: 26
+ m_Height: 26
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 31
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 380
+ m_Y: 180
+ m_Width: 26
+ m_Height: 26
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 103
+ m_Metrics:
+ m_Width: 30
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 33
+ m_Y: 347
+ m_Width: 30
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 104
+ m_Metrics:
+ m_Width: 5
+ m_Height: 51
+ m_HorizontalBearingX: 6
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 201
+ m_Y: 224
+ m_Width: 5
+ m_Height: 51
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 105
+ m_Metrics:
+ m_Width: 22
+ m_Height: 43
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 317
+ m_Y: 304
+ m_Width: 22
+ m_Height: 43
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 106
+ m_Metrics:
+ m_Width: 17
+ m_Height: 6
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 38
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 106
+ m_Y: 396
+ m_Width: 17
+ m_Height: 6
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 107
+ m_Metrics:
+ m_Width: 42
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 89
+ m_Y: 42
+ m_Width: 42
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 108
+ m_Metrics:
+ m_Width: 15
+ m_Height: 17
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 19
+ m_GlyphRect:
+ m_X: 171
+ m_Y: 376
+ m_Width: 15
+ m_Height: 17
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 109
+ m_Metrics:
+ m_Width: 19
+ m_Height: 23
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 26
+ m_HorizontalAdvance: 25
+ m_GlyphRect:
+ m_X: 65
+ m_Y: 357
+ m_Width: 19
+ m_Height: 23
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 110
+ m_Metrics:
+ m_Width: 24
+ m_Height: 12
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 20
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 318
+ m_Y: 290
+ m_Width: 24
+ m_Height: 12
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 111
+ m_Metrics:
+ m_Width: 15
+ m_Height: 4
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 18
+ m_HorizontalAdvance: 19
+ m_GlyphRect:
+ m_X: 188
+ m_Y: 382
+ m_Width: 15
+ m_Height: 4
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 112
+ m_Metrics:
+ m_Width: 42
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 45
+ m_Y: 83
+ m_Width: 42
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 113
+ m_Metrics:
+ m_Width: 17
+ m_Height: 3
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 37
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 106
+ m_Y: 404
+ m_Width: 17
+ m_Height: 3
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 114
+ m_Metrics:
+ m_Width: 19
+ m_Height: 18
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 22
+ m_GlyphRect:
+ m_X: 65
+ m_Y: 382
+ m_Width: 19
+ m_Height: 18
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 115
+ m_Metrics:
+ m_Width: 28
+ m_Height: 31
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 33
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 535
+ m_Y: 1
+ m_Width: 28
+ m_Height: 31
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 116
+ m_Metrics:
+ m_Width: 15
+ m_Height: 20
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 44
+ m_HorizontalAdvance: 18
+ m_GlyphRect:
+ m_X: 341
+ m_Y: 304
+ m_Width: 15
+ m_Height: 20
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 117
+ m_Metrics:
+ m_Width: 15
+ m_Height: 20
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 45
+ m_HorizontalAdvance: 18
+ m_GlyphRect:
+ m_X: 341
+ m_Y: 326
+ m_Width: 15
+ m_Height: 20
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 118
+ m_Metrics:
+ m_Width: 12
+ m_Height: 8
+ m_HorizontalBearingX: 5
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 148
+ m_Y: 403
+ m_Width: 12
+ m_Height: 8
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 119
+ m_Metrics:
+ m_Width: 24
+ m_Height: 37
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 292
+ m_Y: 230
+ m_Width: 24
+ m_Height: 37
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 120
+ m_Metrics:
+ m_Width: 35
+ m_Height: 45
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 300
+ m_Y: 101
+ m_Width: 35
+ m_Height: 45
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 121
+ m_Metrics:
+ m_Width: 9
+ m_Height: 8
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 20
+ m_HorizontalAdvance: 15
+ m_GlyphRect:
+ m_X: 120
+ m_Y: 242
+ m_Width: 9
+ m_Height: 8
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 122
+ m_Metrics:
+ m_Width: 11
+ m_Height: 10
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 1
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 217
+ m_Y: 396
+ m_Width: 11
+ m_Height: 10
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 123
+ m_Metrics:
+ m_Width: 13
+ m_Height: 20
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 45
+ m_HorizontalAdvance: 18
+ m_GlyphRect:
+ m_X: 344
+ m_Y: 230
+ m_Width: 13
+ m_Height: 20
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 124
+ m_Metrics:
+ m_Width: 18
+ m_Height: 17
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 21
+ m_GlyphRect:
+ m_X: 178
+ m_Y: 357
+ m_Width: 18
+ m_Height: 17
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 125
+ m_Metrics:
+ m_Width: 18
+ m_Height: 23
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 26
+ m_HorizontalAdvance: 25
+ m_GlyphRect:
+ m_X: 86
+ m_Y: 384
+ m_Width: 18
+ m_Height: 23
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 126
+ m_Metrics:
+ m_Width: 37
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 39
+ m_GlyphRect:
+ m_X: 426
+ m_Y: 31
+ m_Width: 37
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 127
+ m_Metrics:
+ m_Width: 36
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 39
+ m_GlyphRect:
+ m_X: 382
+ m_Y: 58
+ m_Width: 36
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 128
+ m_Metrics:
+ m_Width: 38
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 39
+ m_GlyphRect:
+ m_X: 172
+ m_Y: 101
+ m_Width: 38
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 129
+ m_Metrics:
+ m_Width: 21
+ m_Height: 38
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 22
+ m_GlyphRect:
+ m_X: 269
+ m_Y: 282
+ m_Width: 21
+ m_Height: 38
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 130
+ m_Metrics:
+ m_Width: 38
+ m_Height: 49
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 132
+ m_Y: 94
+ m_Width: 38
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 131
+ m_Metrics:
+ m_Width: 38
+ m_Height: 49
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 386
+ m_Y: 1
+ m_Width: 38
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 132
+ m_Metrics:
+ m_Width: 38
+ m_Height: 48
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 302
+ m_Y: 42
+ m_Width: 38
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 133
+ m_Metrics:
+ m_Width: 38
+ m_Height: 47
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 47
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 342
+ m_Y: 42
+ m_Width: 38
+ m_Height: 47
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 134
+ m_Metrics:
+ m_Width: 38
+ m_Height: 48
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 260
+ m_Y: 47
+ m_Width: 38
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 135
+ m_Metrics:
+ m_Width: 38
+ m_Height: 50
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 50
+ m_HorizontalAdvance: 37
+ m_GlyphRect:
+ m_X: 133
+ m_Y: 42
+ m_Width: 38
+ m_Height: 50
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 136
+ m_Metrics:
+ m_Width: 50
+ m_Height: 39
+ m_HorizontalBearingX: -1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 51
+ m_GlyphRect:
+ m_X: 122
+ m_Y: 1
+ m_Width: 50
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 137
+ m_Metrics:
+ m_Width: 34
+ m_Height: 48
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 38
+ m_GlyphRect:
+ m_X: 209
+ m_Y: 175
+ m_Width: 34
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 138
+ m_Metrics:
+ m_Width: 26
+ m_Height: 49
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 684
+ m_Y: 43
+ m_Width: 26
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 139
+ m_Metrics:
+ m_Width: 26
+ m_Height: 49
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 654
+ m_Y: 70
+ m_Width: 26
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 140
+ m_Metrics:
+ m_Width: 26
+ m_Height: 48
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 623
+ m_Y: 71
+ m_Width: 26
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 141
+ m_Metrics:
+ m_Width: 26
+ m_Height: 48
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 564
+ m_Y: 72
+ m_Width: 26
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 142
+ m_Metrics:
+ m_Width: 15
+ m_Height: 49
+ m_HorizontalBearingX: -2
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 69
+ m_Y: 256
+ m_Width: 15
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 143
+ m_Metrics:
+ m_Width: 15
+ m_Height: 49
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 547
+ m_Y: 171
+ m_Width: 15
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 144
+ m_Metrics:
+ m_Width: 19
+ m_Height: 48
+ m_HorizontalBearingX: -1
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 65
+ m_Y: 307
+ m_Width: 19
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 145
+ m_Metrics:
+ m_Width: 19
+ m_Height: 48
+ m_HorizontalBearingX: -1
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 359
+ m_Y: 162
+ m_Width: 19
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 146
+ m_Metrics:
+ m_Width: 40
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 43
+ m_GlyphRect:
+ m_X: 344
+ m_Y: 1
+ m_Width: 40
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 147
+ m_Metrics:
+ m_Width: 33
+ m_Height: 47
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 47
+ m_HorizontalAdvance: 42
+ m_GlyphRect:
+ m_X: 86
+ m_Y: 163
+ m_Width: 33
+ m_Height: 47
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 148
+ m_Metrics:
+ m_Width: 40
+ m_Height: 49
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 218
+ m_Y: 1
+ m_Width: 40
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 149
+ m_Metrics:
+ m_Width: 40
+ m_Height: 49
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 173
+ m_Y: 50
+ m_Width: 40
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 150
+ m_Metrics:
+ m_Width: 40
+ m_Height: 48
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 89
+ m_Y: 113
+ m_Width: 40
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 151
+ m_Metrics:
+ m_Width: 40
+ m_Height: 47
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 47
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 159
+ m_Width: 40
+ m_Height: 47
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 152
+ m_Metrics:
+ m_Width: 40
+ m_Height: 48
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 44
+ m_Y: 124
+ m_Width: 40
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 153
+ m_Metrics:
+ m_Width: 26
+ m_Height: 26
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 31
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 522
+ m_Y: 118
+ m_Width: 26
+ m_Height: 26
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 154
+ m_Metrics:
+ m_Width: 40
+ m_Height: 44
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 41
+ m_HorizontalAdvance: 44
+ m_GlyphRect:
+ m_X: 260
+ m_Y: 1
+ m_Width: 40
+ m_Height: 44
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 155
+ m_Metrics:
+ m_Width: 32
+ m_Height: 49
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 40
+ m_GlyphRect:
+ m_X: 131
+ m_Y: 227
+ m_Width: 32
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 156
+ m_Metrics:
+ m_Width: 32
+ m_Height: 49
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 40
+ m_GlyphRect:
+ m_X: 165
+ m_Y: 265
+ m_Width: 32
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 157
+ m_Metrics:
+ m_Width: 32
+ m_Height: 48
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 40
+ m_GlyphRect:
+ m_X: 43
+ m_Y: 174
+ m_Width: 32
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 158
+ m_Metrics:
+ m_Width: 32
+ m_Height: 48
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 48
+ m_HorizontalAdvance: 40
+ m_GlyphRect:
+ m_X: 86
+ m_Y: 212
+ m_Width: 32
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 159
+ m_Metrics:
+ m_Width: 35
+ m_Height: 49
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 49
+ m_HorizontalAdvance: 35
+ m_GlyphRect:
+ m_X: 255
+ m_Y: 97
+ m_Width: 35
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 160
+ m_Metrics:
+ m_Width: 27
+ m_Height: 39
+ m_HorizontalBearingX: 5
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 34
+ m_GlyphRect:
+ m_X: 504
+ m_Y: 50
+ m_Width: 27
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 161
+ m_Metrics:
+ m_Width: 27
+ m_Height: 39
+ m_HorizontalBearingX: 5
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 34
+ m_GlyphRect:
+ m_X: 594
+ m_Y: 31
+ m_Width: 27
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 162
+ m_Metrics:
+ m_Width: 23
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 238
+ m_Y: 284
+ m_Width: 23
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 163
+ m_Metrics:
+ m_Width: 23
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 208
+ m_Y: 310
+ m_Width: 23
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 164
+ m_Metrics:
+ m_Width: 23
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 164
+ m_Y: 316
+ m_Width: 23
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 165
+ m_Metrics:
+ m_Width: 23
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 129
+ m_Y: 319
+ m_Width: 23
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 166
+ m_Metrics:
+ m_Width: 23
+ m_Height: 38
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 38
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 86
+ m_Y: 344
+ m_Width: 23
+ m_Height: 38
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 167
+ m_Metrics:
+ m_Width: 23
+ m_Height: 41
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 41
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 379
+ m_Y: 290
+ m_Width: 23
+ m_Height: 41
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 168
+ m_Metrics:
+ m_Width: 41
+ m_Height: 28
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 45
+ m_GlyphRect:
+ m_X: 89
+ m_Y: 83
+ m_Width: 41
+ m_Height: 28
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 169
+ m_Metrics:
+ m_Width: 23
+ m_Height: 37
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 28
+ m_HorizontalAdvance: 26
+ m_GlyphRect:
+ m_X: 32
+ m_Y: 388
+ m_Width: 23
+ m_Height: 37
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 170
+ m_Metrics:
+ m_Width: 25
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 29
+ m_GlyphRect:
+ m_X: 438
+ m_Y: 176
+ m_Width: 25
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 171
+ m_Metrics:
+ m_Width: 25
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 29
+ m_GlyphRect:
+ m_X: 408
+ m_Y: 193
+ m_Width: 25
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 172
+ m_Metrics:
+ m_Width: 25
+ m_Height: 39
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 29
+ m_GlyphRect:
+ m_X: 380
+ m_Y: 208
+ m_Width: 25
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 173
+ m_Metrics:
+ m_Width: 25
+ m_Height: 38
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 38
+ m_HorizontalAdvance: 29
+ m_GlyphRect:
+ m_X: 520
+ m_Y: 146
+ m_Width: 25
+ m_Height: 38
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 174
+ m_Metrics:
+ m_Width: 11
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 14
+ m_GlyphRect:
+ m_X: 204
+ m_Y: 396
+ m_Width: 11
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 175
+ m_Metrics:
+ m_Width: 12
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 14
+ m_GlyphRect:
+ m_X: 171
+ m_Y: 395
+ m_Width: 12
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 176
+ m_Metrics:
+ m_Width: 17
+ m_Height: 39
+ m_HorizontalBearingX: -1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 14
+ m_GlyphRect:
+ m_X: 189
+ m_Y: 316
+ m_Width: 17
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 177
+ m_Metrics:
+ m_Width: 17
+ m_Height: 38
+ m_HorizontalBearingX: -1
+ m_HorizontalBearingY: 38
+ m_HorizontalAdvance: 14
+ m_GlyphRect:
+ m_X: 152
+ m_Y: 363
+ m_Width: 17
+ m_Height: 38
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 178
+ m_Metrics:
+ m_Width: 27
+ m_Height: 40
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 30
+ m_GlyphRect:
+ m_X: 685
+ m_Y: 1
+ m_Width: 27
+ m_Height: 40
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 179
+ m_Metrics:
+ m_Width: 24
+ m_Height: 39
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 407
+ m_Y: 234
+ m_Width: 24
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 180
+ m_Metrics:
+ m_Width: 28
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 337
+ m_Y: 109
+ m_Width: 28
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 181
+ m_Metrics:
+ m_Width: 28
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 299
+ m_Y: 148
+ m_Width: 28
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 182
+ m_Metrics:
+ m_Width: 28
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 329
+ m_Y: 150
+ m_Width: 28
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 183
+ m_Metrics:
+ m_Width: 28
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 299
+ m_Y: 189
+ m_Width: 28
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 184
+ m_Metrics:
+ m_Width: 28
+ m_Height: 38
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 38
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 380
+ m_Y: 140
+ m_Width: 28
+ m_Height: 38
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 185
+ m_Metrics:
+ m_Width: 28
+ m_Height: 26
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 31
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 655
+ m_Y: 1
+ m_Width: 28
+ m_Height: 26
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 186
+ m_Metrics:
+ m_Width: 29
+ m_Height: 33
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 31
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 208
+ m_Y: 225
+ m_Width: 29
+ m_Height: 33
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 187
+ m_Metrics:
+ m_Width: 24
+ m_Height: 39
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 380
+ m_Y: 249
+ m_Width: 24
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 188
+ m_Metrics:
+ m_Width: 24
+ m_Height: 39
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 461
+ m_Y: 235
+ m_Width: 24
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 189
+ m_Metrics:
+ m_Width: 24
+ m_Height: 39
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 433
+ m_Y: 258
+ m_Width: 24
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 190
+ m_Metrics:
+ m_Width: 24
+ m_Height: 38
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 38
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 406
+ m_Y: 275
+ m_Width: 24
+ m_Height: 38
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 191
+ m_Metrics:
+ m_Width: 28
+ m_Height: 48
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 208
+ m_Y: 260
+ m_Width: 28
+ m_Height: 48
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 192
+ m_Metrics:
+ m_Width: 25
+ m_Height: 49
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 30
+ m_GlyphRect:
+ m_X: 564
+ m_Y: 135
+ m_Width: 25
+ m_Height: 49
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 193
+ m_Metrics:
+ m_Width: 28
+ m_Height: 47
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 38
+ m_HorizontalAdvance: 28
+ m_GlyphRect:
+ m_X: 505
+ m_Y: 1
+ m_Width: 28
+ m_Height: 47
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 229
+ m_Metrics:
+ m_Width: 23
+ m_Height: 4
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 18
+ m_HorizontalAdvance: 31
+ m_GlyphRect:
+ m_X: 233
+ m_Y: 325
+ m_Width: 23
+ m_Height: 4
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 230
+ m_Metrics:
+ m_Width: 37
+ m_Height: 4
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 18
+ m_HorizontalAdvance: 45
+ m_GlyphRect:
+ m_X: 382
+ m_Y: 52
+ m_Width: 37
+ m_Height: 4
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 231
+ m_Metrics:
+ m_Width: 8
+ m_Height: 15
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 12
+ m_GlyphRect:
+ m_X: 120
+ m_Y: 281
+ m_Width: 8
+ m_Height: 15
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 232
+ m_Metrics:
+ m_Width: 7
+ m_Height: 16
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 12
+ m_GlyphRect:
+ m_X: 495
+ m_Y: 42
+ m_Width: 7
+ m_Height: 16
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 233
+ m_Metrics:
+ m_Width: 7
+ m_Height: 15
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 7
+ m_HorizontalAdvance: 12
+ m_GlyphRect:
+ m_X: 410
+ m_Y: 99
+ m_Width: 7
+ m_Height: 15
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 234
+ m_Metrics:
+ m_Width: 16
+ m_Height: 15
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 20
+ m_GlyphRect:
+ m_X: 111
+ m_Y: 362
+ m_Width: 16
+ m_Height: 15
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 235
+ m_Metrics:
+ m_Width: 16
+ m_Height: 16
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 42
+ m_HorizontalAdvance: 20
+ m_GlyphRect:
+ m_X: 111
+ m_Y: 344
+ m_Width: 16
+ m_Height: 16
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 236
+ m_Metrics:
+ m_Width: 16
+ m_Height: 15
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 7
+ m_HorizontalAdvance: 20
+ m_GlyphRect:
+ m_X: 111
+ m_Y: 379
+ m_Width: 16
+ m_Height: 15
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 237
+ m_Metrics:
+ m_Width: 26
+ m_Height: 50
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 743
+ m_Y: 1
+ m_Width: 26
+ m_Height: 50
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 238
+ m_Metrics:
+ m_Width: 26
+ m_Height: 50
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 40
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 714
+ m_Y: 31
+ m_Width: 26
+ m_Height: 50
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 239
+ m_Metrics:
+ m_Width: 22
+ m_Height: 20
+ m_HorizontalBearingX: 5
+ m_HorizontalBearingY: 26
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 232
+ m_Y: 376
+ m_Width: 22
+ m_Height: 20
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 240
+ m_Metrics:
+ m_Width: 36
+ m_Height: 7
+ m_HorizontalBearingX: 2
+ m_HorizontalBearingY: 7
+ m_HorizontalAdvance: 40
+ m_GlyphRect:
+ m_X: 300
+ m_Y: 92
+ m_Width: 36
+ m_Height: 7
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 241
+ m_Metrics:
+ m_Width: 61
+ m_Height: 39
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 63
+ m_GlyphRect:
+ m_X: 1
+ m_Y: 1
+ m_Width: 61
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 242
+ m_Metrics:
+ m_Width: 10
+ m_Height: 23
+ m_HorizontalBearingX: 3
+ m_HorizontalBearingY: 26
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 185
+ m_Y: 414
+ m_Width: 10
+ m_Height: 23
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 243
+ m_Metrics:
+ m_Width: 10
+ m_Height: 23
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 26
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 161
+ m_Y: 436
+ m_Width: 10
+ m_Height: 23
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 244
+ m_Metrics:
+ m_Width: 29
+ m_Height: 39
+ m_HorizontalBearingX: -6
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 17
+ m_GlyphRect:
+ m_X: 245
+ m_Y: 189
+ m_Width: 29
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 245
+ m_Metrics:
+ m_Width: 32
+ m_Height: 39
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 32
+ m_GlyphRect:
+ m_X: 86
+ m_Y: 262
+ m_Width: 32
+ m_Height: 39
+ m_Scale: 1
+ m_AtlasIndex: 0
+ - m_Index: 246
+ m_Metrics:
+ m_Width: 36
+ m_Height: 16
+ m_HorizontalBearingX: 1
+ m_HorizontalBearingY: 39
+ m_HorizontalAdvance: 40
+ m_GlyphRect:
+ m_X: 342
+ m_Y: 91
+ m_Width: 36
+ m_Height: 16
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_CharacterTable:
+ - m_ElementType: 1
+ m_Unicode: 32
+ m_GlyphIndex: 3
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 33
+ m_GlyphIndex: 4
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 34
+ m_GlyphIndex: 5
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 35
+ m_GlyphIndex: 6
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 36
+ m_GlyphIndex: 7
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 37
+ m_GlyphIndex: 8
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 38
+ m_GlyphIndex: 9
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 39
+ m_GlyphIndex: 10
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 40
+ m_GlyphIndex: 11
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 41
+ m_GlyphIndex: 12
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 42
+ m_GlyphIndex: 13
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 43
+ m_GlyphIndex: 14
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 44
+ m_GlyphIndex: 15
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 45
+ m_GlyphIndex: 16
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 46
+ m_GlyphIndex: 17
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 47
+ m_GlyphIndex: 18
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 48
+ m_GlyphIndex: 19
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 49
+ m_GlyphIndex: 20
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 50
+ m_GlyphIndex: 21
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 51
+ m_GlyphIndex: 22
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 52
+ m_GlyphIndex: 23
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 53
+ m_GlyphIndex: 24
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 54
+ m_GlyphIndex: 25
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 55
+ m_GlyphIndex: 26
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 56
+ m_GlyphIndex: 27
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 57
+ m_GlyphIndex: 28
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 58
+ m_GlyphIndex: 29
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 59
+ m_GlyphIndex: 30
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 60
+ m_GlyphIndex: 31
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 61
+ m_GlyphIndex: 32
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 62
+ m_GlyphIndex: 33
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 63
+ m_GlyphIndex: 34
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 64
+ m_GlyphIndex: 35
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 65
+ m_GlyphIndex: 36
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 66
+ m_GlyphIndex: 37
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 67
+ m_GlyphIndex: 38
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 68
+ m_GlyphIndex: 39
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 69
+ m_GlyphIndex: 40
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 70
+ m_GlyphIndex: 41
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 71
+ m_GlyphIndex: 42
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 72
+ m_GlyphIndex: 43
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 73
+ m_GlyphIndex: 44
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 74
+ m_GlyphIndex: 45
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 75
+ m_GlyphIndex: 46
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 76
+ m_GlyphIndex: 47
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 77
+ m_GlyphIndex: 48
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 78
+ m_GlyphIndex: 49
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 79
+ m_GlyphIndex: 50
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 80
+ m_GlyphIndex: 51
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 81
+ m_GlyphIndex: 52
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 82
+ m_GlyphIndex: 53
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 83
+ m_GlyphIndex: 54
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 84
+ m_GlyphIndex: 55
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 85
+ m_GlyphIndex: 56
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 86
+ m_GlyphIndex: 57
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 87
+ m_GlyphIndex: 58
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 88
+ m_GlyphIndex: 59
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 89
+ m_GlyphIndex: 60
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 90
+ m_GlyphIndex: 61
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 91
+ m_GlyphIndex: 62
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 92
+ m_GlyphIndex: 63
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 93
+ m_GlyphIndex: 64
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 94
+ m_GlyphIndex: 65
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 95
+ m_GlyphIndex: 66
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 96
+ m_GlyphIndex: 67
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 97
+ m_GlyphIndex: 68
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 98
+ m_GlyphIndex: 69
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 99
+ m_GlyphIndex: 70
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 100
+ m_GlyphIndex: 71
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 101
+ m_GlyphIndex: 72
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 102
+ m_GlyphIndex: 73
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 103
+ m_GlyphIndex: 74
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 104
+ m_GlyphIndex: 75
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 105
+ m_GlyphIndex: 76
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 106
+ m_GlyphIndex: 77
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 107
+ m_GlyphIndex: 78
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 108
+ m_GlyphIndex: 79
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 109
+ m_GlyphIndex: 80
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 110
+ m_GlyphIndex: 81
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 111
+ m_GlyphIndex: 82
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 112
+ m_GlyphIndex: 83
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 113
+ m_GlyphIndex: 84
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 114
+ m_GlyphIndex: 85
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 115
+ m_GlyphIndex: 86
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 116
+ m_GlyphIndex: 87
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 117
+ m_GlyphIndex: 88
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 118
+ m_GlyphIndex: 89
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 119
+ m_GlyphIndex: 90
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 120
+ m_GlyphIndex: 91
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 121
+ m_GlyphIndex: 92
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 122
+ m_GlyphIndex: 93
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 123
+ m_GlyphIndex: 94
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 124
+ m_GlyphIndex: 95
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 125
+ m_GlyphIndex: 96
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 126
+ m_GlyphIndex: 97
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 160
+ m_GlyphIndex: 98
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 161
+ m_GlyphIndex: 99
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 162
+ m_GlyphIndex: 100
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 163
+ m_GlyphIndex: 101
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 164
+ m_GlyphIndex: 102
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 165
+ m_GlyphIndex: 103
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 166
+ m_GlyphIndex: 104
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 167
+ m_GlyphIndex: 105
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 168
+ m_GlyphIndex: 106
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 169
+ m_GlyphIndex: 107
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 170
+ m_GlyphIndex: 108
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 171
+ m_GlyphIndex: 109
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 172
+ m_GlyphIndex: 110
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 173
+ m_GlyphIndex: 111
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 174
+ m_GlyphIndex: 112
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 175
+ m_GlyphIndex: 113
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 176
+ m_GlyphIndex: 114
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 177
+ m_GlyphIndex: 115
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 178
+ m_GlyphIndex: 116
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 179
+ m_GlyphIndex: 117
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 180
+ m_GlyphIndex: 118
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 181
+ m_GlyphIndex: 119
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 182
+ m_GlyphIndex: 120
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 183
+ m_GlyphIndex: 121
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 184
+ m_GlyphIndex: 122
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 185
+ m_GlyphIndex: 123
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 186
+ m_GlyphIndex: 124
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 187
+ m_GlyphIndex: 125
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 188
+ m_GlyphIndex: 126
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 189
+ m_GlyphIndex: 127
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 190
+ m_GlyphIndex: 128
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 191
+ m_GlyphIndex: 129
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 192
+ m_GlyphIndex: 130
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 193
+ m_GlyphIndex: 131
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 194
+ m_GlyphIndex: 132
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 195
+ m_GlyphIndex: 133
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 196
+ m_GlyphIndex: 134
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 197
+ m_GlyphIndex: 135
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 198
+ m_GlyphIndex: 136
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 199
+ m_GlyphIndex: 137
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 200
+ m_GlyphIndex: 138
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 201
+ m_GlyphIndex: 139
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 202
+ m_GlyphIndex: 140
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 203
+ m_GlyphIndex: 141
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 204
+ m_GlyphIndex: 142
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 205
+ m_GlyphIndex: 143
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 206
+ m_GlyphIndex: 144
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 207
+ m_GlyphIndex: 145
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 208
+ m_GlyphIndex: 146
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 209
+ m_GlyphIndex: 147
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 210
+ m_GlyphIndex: 148
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 211
+ m_GlyphIndex: 149
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 212
+ m_GlyphIndex: 150
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 213
+ m_GlyphIndex: 151
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 214
+ m_GlyphIndex: 152
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 215
+ m_GlyphIndex: 153
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 216
+ m_GlyphIndex: 154
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 217
+ m_GlyphIndex: 155
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 218
+ m_GlyphIndex: 156
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 219
+ m_GlyphIndex: 157
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 220
+ m_GlyphIndex: 158
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 221
+ m_GlyphIndex: 159
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 222
+ m_GlyphIndex: 160
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 223
+ m_GlyphIndex: 161
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 224
+ m_GlyphIndex: 162
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 225
+ m_GlyphIndex: 163
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 226
+ m_GlyphIndex: 164
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 227
+ m_GlyphIndex: 165
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 228
+ m_GlyphIndex: 166
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 229
+ m_GlyphIndex: 167
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 230
+ m_GlyphIndex: 168
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 231
+ m_GlyphIndex: 169
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 232
+ m_GlyphIndex: 170
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 233
+ m_GlyphIndex: 171
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 234
+ m_GlyphIndex: 172
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 235
+ m_GlyphIndex: 173
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 236
+ m_GlyphIndex: 174
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 237
+ m_GlyphIndex: 175
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 238
+ m_GlyphIndex: 176
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 239
+ m_GlyphIndex: 177
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 240
+ m_GlyphIndex: 178
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 241
+ m_GlyphIndex: 179
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 242
+ m_GlyphIndex: 180
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 243
+ m_GlyphIndex: 181
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 244
+ m_GlyphIndex: 182
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 245
+ m_GlyphIndex: 183
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 246
+ m_GlyphIndex: 184
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 247
+ m_GlyphIndex: 185
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 248
+ m_GlyphIndex: 186
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 249
+ m_GlyphIndex: 187
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 250
+ m_GlyphIndex: 188
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 251
+ m_GlyphIndex: 189
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 252
+ m_GlyphIndex: 190
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 253
+ m_GlyphIndex: 191
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 254
+ m_GlyphIndex: 192
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 255
+ m_GlyphIndex: 193
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8211
+ m_GlyphIndex: 229
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8212
+ m_GlyphIndex: 230
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8216
+ m_GlyphIndex: 231
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8217
+ m_GlyphIndex: 232
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8218
+ m_GlyphIndex: 233
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8220
+ m_GlyphIndex: 234
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8221
+ m_GlyphIndex: 235
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8222
+ m_GlyphIndex: 236
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8224
+ m_GlyphIndex: 237
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8225
+ m_GlyphIndex: 238
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8226
+ m_GlyphIndex: 239
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8230
+ m_GlyphIndex: 240
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8240
+ m_GlyphIndex: 241
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8249
+ m_GlyphIndex: 242
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8250
+ m_GlyphIndex: 243
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8260
+ m_GlyphIndex: 244
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8364
+ m_GlyphIndex: 245
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8482
+ m_GlyphIndex: 246
+ m_Scale: 1
+ m_AtlasTextures:
+ - {fileID: -2340667833886341526}
+ m_AtlasTextureIndex: 0
+ m_UsedGlyphRects:
+ - m_X: 0
+ m_Y: 0
+ m_Width: 63
+ m_Height: 41
+ - m_X: 63
+ m_Y: 0
+ m_Width: 58
+ m_Height: 41
+ - m_X: 121
+ m_Y: 0
+ m_Width: 52
+ m_Height: 41
+ - m_X: 173
+ m_Y: 0
+ m_Width: 44
+ m_Height: 49
+ - m_X: 0
+ m_Y: 41
+ m_Width: 44
+ m_Height: 46
+ - m_X: 44
+ m_Y: 41
+ m_Width: 44
+ m_Height: 41
+ - m_X: 88
+ m_Y: 41
+ m_Width: 44
+ m_Height: 41
+ - m_X: 132
+ m_Y: 41
+ m_Width: 40
+ m_Height: 52
+ - m_X: 44
+ m_Y: 82
+ m_Width: 44
+ m_Height: 41
+ - m_X: 0
+ m_Y: 87
+ m_Width: 44
+ m_Height: 30
+ - m_X: 0
+ m_Y: 117
+ m_Width: 43
+ m_Height: 41
+ - m_X: 88
+ m_Y: 82
+ m_Width: 43
+ m_Height: 30
+ - m_X: 217
+ m_Y: 0
+ m_Width: 42
+ m_Height: 51
+ - m_X: 172
+ m_Y: 49
+ m_Width: 42
+ m_Height: 51
+ - m_X: 131
+ m_Y: 93
+ m_Width: 40
+ m_Height: 51
+ - m_X: 88
+ m_Y: 112
+ m_Width: 42
+ m_Height: 50
+ - m_X: 43
+ m_Y: 123
+ m_Width: 42
+ m_Height: 50
+ - m_X: 0
+ m_Y: 158
+ m_Width: 42
+ m_Height: 49
+ - m_X: 259
+ m_Y: 0
+ m_Width: 42
+ m_Height: 46
+ - m_X: 301
+ m_Y: 0
+ m_Width: 42
+ m_Height: 41
+ - m_X: 343
+ m_Y: 0
+ m_Width: 42
+ m_Height: 41
+ - m_X: 385
+ m_Y: 0
+ m_Width: 40
+ m_Height: 51
+ - m_X: 301
+ m_Y: 41
+ m_Width: 40
+ m_Height: 50
+ - m_X: 259
+ m_Y: 46
+ m_Width: 40
+ m_Height: 50
+ - m_X: 341
+ m_Y: 41
+ m_Width: 40
+ m_Height: 49
+ - m_X: 214
+ m_Y: 51
+ m_Width: 40
+ m_Height: 41
+ - m_X: 214
+ m_Y: 92
+ m_Width: 40
+ m_Height: 41
+ - m_X: 171
+ m_Y: 100
+ m_Width: 40
+ m_Height: 41
+ - m_X: 425
+ m_Y: 0
+ m_Width: 40
+ m_Height: 30
+ - m_X: 465
+ m_Y: 0
+ m_Width: 39
+ m_Height: 41
+ - m_X: 425
+ m_Y: 30
+ m_Width: 39
+ m_Height: 41
+ - m_X: 381
+ m_Y: 51
+ m_Width: 39
+ m_Height: 6
+ - m_X: 381
+ m_Y: 57
+ m_Width: 38
+ m_Height: 41
+ - m_X: 341
+ m_Y: 90
+ m_Width: 38
+ m_Height: 18
+ - m_X: 299
+ m_Y: 91
+ m_Width: 38
+ m_Height: 9
+ - m_X: 254
+ m_Y: 96
+ m_Width: 37
+ m_Height: 51
+ - m_X: 291
+ m_Y: 96
+ m_Width: 8
+ m_Height: 42
+ - m_X: 299
+ m_Y: 100
+ m_Width: 37
+ m_Height: 47
+ - m_X: 291
+ m_Y: 138
+ m_Width: 7
+ m_Height: 53
+ - m_X: 211
+ m_Y: 133
+ m_Width: 37
+ m_Height: 41
+ - m_X: 171
+ m_Y: 141
+ m_Width: 37
+ m_Height: 41
+ - m_X: 130
+ m_Y: 144
+ m_Width: 37
+ m_Height: 41
+ - m_X: 248
+ m_Y: 147
+ m_Width: 37
+ m_Height: 41
+ - m_X: 208
+ m_Y: 174
+ m_Width: 36
+ m_Height: 50
+ - m_X: 167
+ m_Y: 182
+ m_Width: 36
+ m_Height: 41
+ - m_X: 85
+ m_Y: 162
+ m_Width: 35
+ m_Height: 49
+ - m_X: 120
+ m_Y: 162
+ m_Width: 10
+ m_Height: 42
+ - m_X: 130
+ m_Y: 185
+ m_Width: 35
+ m_Height: 41
+ - m_X: 120
+ m_Y: 204
+ m_Width: 10
+ m_Height: 37
+ - m_X: 165
+ m_Y: 223
+ m_Width: 35
+ m_Height: 41
+ - m_X: 130
+ m_Y: 226
+ m_Width: 34
+ m_Height: 51
+ - m_X: 200
+ m_Y: 223
+ m_Width: 7
+ m_Height: 53
+ - m_X: 164
+ m_Y: 264
+ m_Width: 34
+ m_Height: 51
+ - m_X: 42
+ m_Y: 173
+ m_Width: 34
+ m_Height: 50
+ - m_X: 76
+ m_Y: 173
+ m_Width: 9
+ m_Height: 41
+ - m_X: 85
+ m_Y: 211
+ m_Width: 34
+ m_Height: 50
+ - m_X: 76
+ m_Y: 214
+ m_Width: 9
+ m_Height: 41
+ - m_X: 119
+ m_Y: 241
+ m_Width: 11
+ m_Height: 10
+ - m_X: 119
+ m_Y: 251
+ m_Width: 10
+ m_Height: 29
+ - m_X: 129
+ m_Y: 277
+ m_Width: 34
+ m_Height: 41
+ - m_X: 0
+ m_Y: 207
+ m_Width: 34
+ m_Height: 41
+ - m_X: 34
+ m_Y: 207
+ m_Width: 7
+ m_Height: 16
+ - m_X: 34
+ m_Y: 223
+ m_Width: 34
+ m_Height: 41
+ - m_X: 68
+ m_Y: 255
+ m_Width: 17
+ m_Height: 51
+ - m_X: 85
+ m_Y: 261
+ m_Width: 34
+ m_Height: 41
+ - m_X: 119
+ m_Y: 280
+ m_Width: 10
+ m_Height: 17
+ - m_X: 119
+ m_Y: 297
+ m_Width: 10
+ m_Height: 16
+ - m_X: 85
+ m_Y: 302
+ m_Width: 33
+ m_Height: 41
+ - m_X: 118
+ m_Y: 313
+ m_Width: 10
+ m_Height: 9
+ - m_X: 0
+ m_Y: 248
+ m_Width: 32
+ m_Height: 41
+ - m_X: 32
+ m_Y: 264
+ m_Width: 32
+ m_Height: 41
+ - m_X: 0
+ m_Y: 289
+ m_Width: 32
+ m_Height: 41
+ - m_X: 32
+ m_Y: 305
+ m_Width: 32
+ m_Height: 41
+ - m_X: 0
+ m_Y: 330
+ m_Width: 32
+ m_Height: 41
+ - m_X: 64
+ m_Y: 306
+ m_Width: 21
+ m_Height: 50
+ - m_X: 32
+ m_Y: 346
+ m_Width: 32
+ m_Height: 41
+ - m_X: 0
+ m_Y: 371
+ m_Width: 31
+ m_Height: 41
+ - m_X: 244
+ m_Y: 188
+ m_Width: 31
+ m_Height: 41
+ - m_X: 275
+ m_Y: 188
+ m_Width: 16
+ m_Height: 52
+ - m_X: 207
+ m_Y: 224
+ m_Width: 31
+ m_Height: 35
+ - m_X: 238
+ m_Y: 229
+ m_Width: 30
+ m_Height: 54
+ - m_X: 207
+ m_Y: 259
+ m_Width: 30
+ m_Height: 50
+ - m_X: 198
+ m_Y: 276
+ m_Width: 9
+ m_Height: 39
+ - m_X: 504
+ m_Y: 0
+ m_Width: 30
+ m_Height: 49
+ - m_X: 464
+ m_Y: 41
+ m_Width: 30
+ m_Height: 41
+ - m_X: 494
+ m_Y: 41
+ m_Width: 9
+ m_Height: 18
+ - m_X: 419
+ m_Y: 71
+ m_Width: 30
+ m_Height: 41
+ - m_X: 449
+ m_Y: 71
+ m_Width: 15
+ m_Height: 52
+ - m_X: 379
+ m_Y: 98
+ m_Width: 30
+ m_Height: 41
+ - m_X: 409
+ m_Y: 98
+ m_Width: 9
+ m_Height: 17
+ - m_X: 418
+ m_Y: 112
+ m_Width: 30
+ m_Height: 41
+ - m_X: 336
+ m_Y: 108
+ m_Width: 30
+ m_Height: 41
+ - m_X: 366
+ m_Y: 108
+ m_Width: 13
+ m_Height: 53
+ - m_X: 298
+ m_Y: 147
+ m_Width: 30
+ m_Height: 41
+ - m_X: 328
+ m_Y: 149
+ m_Width: 30
+ m_Height: 41
+ - m_X: 298
+ m_Y: 188
+ m_Width: 30
+ m_Height: 41
+ - m_X: 379
+ m_Y: 139
+ m_Width: 30
+ m_Height: 40
+ - m_X: 358
+ m_Y: 161
+ m_Width: 21
+ m_Height: 50
+ - m_X: 328
+ m_Y: 190
+ m_Width: 30
+ m_Height: 39
+ - m_X: 534
+ m_Y: 0
+ m_Width: 30
+ m_Height: 33
+ - m_X: 564
+ m_Y: 0
+ m_Width: 30
+ m_Height: 30
+ - m_X: 594
+ m_Y: 0
+ m_Width: 30
+ m_Height: 30
+ - m_X: 624
+ m_Y: 0
+ m_Width: 30
+ m_Height: 29
+ - m_X: 654
+ m_Y: 0
+ m_Width: 30
+ m_Height: 28
+ - m_X: 684
+ m_Y: 0
+ m_Width: 29
+ m_Height: 42
+ - m_X: 654
+ m_Y: 28
+ m_Width: 29
+ m_Height: 41
+ - m_X: 624
+ m_Y: 29
+ m_Width: 29
+ m_Height: 41
+ - m_X: 564
+ m_Y: 30
+ m_Width: 29
+ m_Height: 41
+ - m_X: 534
+ m_Y: 33
+ m_Width: 29
+ m_Height: 41
+ - m_X: 503
+ m_Y: 49
+ m_Width: 29
+ m_Height: 41
+ - m_X: 593
+ m_Y: 30
+ m_Width: 29
+ m_Height: 41
+ - m_X: 464
+ m_Y: 82
+ m_Width: 29
+ m_Height: 40
+ - m_X: 713
+ m_Y: 0
+ m_Width: 29
+ m_Height: 30
+ - m_X: 742
+ m_Y: 0
+ m_Width: 28
+ m_Height: 52
+ - m_X: 713
+ m_Y: 30
+ m_Width: 28
+ m_Height: 52
+ - m_X: 683
+ m_Y: 42
+ m_Width: 28
+ m_Height: 51
+ - m_X: 653
+ m_Y: 69
+ m_Width: 28
+ m_Height: 51
+ - m_X: 622
+ m_Y: 70
+ m_Width: 28
+ m_Height: 50
+ - m_X: 563
+ m_Y: 71
+ m_Width: 28
+ m_Height: 50
+ - m_X: 532
+ m_Y: 74
+ m_Width: 28
+ m_Height: 43
+ - m_X: 591
+ m_Y: 71
+ m_Width: 28
+ m_Height: 42
+ - m_X: 591
+ m_Y: 113
+ m_Width: 28
+ m_Height: 41
+ - m_X: 493
+ m_Y: 90
+ m_Width: 28
+ m_Height: 41
+ - m_X: 464
+ m_Y: 122
+ m_Width: 28
+ m_Height: 41
+ - m_X: 448
+ m_Y: 123
+ m_Width: 16
+ m_Height: 52
+ - m_X: 409
+ m_Y: 153
+ m_Width: 28
+ m_Height: 39
+ - m_X: 379
+ m_Y: 179
+ m_Width: 28
+ m_Height: 28
+ - m_X: 521
+ m_Y: 117
+ m_Width: 28
+ m_Height: 28
+ - m_X: 549
+ m_Y: 117
+ m_Width: 14
+ m_Height: 53
+ - m_X: 563
+ m_Y: 121
+ m_Width: 28
+ m_Height: 13
+ - m_X: 563
+ m_Y: 134
+ m_Width: 27
+ m_Height: 51
+ - m_X: 492
+ m_Y: 131
+ m_Width: 27
+ m_Height: 42
+ - m_X: 464
+ m_Y: 163
+ m_Width: 27
+ m_Height: 41
+ - m_X: 437
+ m_Y: 175
+ m_Width: 27
+ m_Height: 41
+ - m_X: 407
+ m_Y: 192
+ m_Width: 27
+ m_Height: 41
+ - m_X: 379
+ m_Y: 207
+ m_Width: 27
+ m_Height: 41
+ - m_X: 358
+ m_Y: 211
+ m_Width: 21
+ m_Height: 41
+ - m_X: 519
+ m_Y: 145
+ m_Width: 27
+ m_Height: 40
+ - m_X: 546
+ m_Y: 170
+ m_Width: 17
+ m_Height: 51
+ - m_X: 491
+ m_Y: 173
+ m_Width: 27
+ m_Height: 39
+ - m_X: 464
+ m_Y: 204
+ m_Width: 27
+ m_Height: 30
+ - m_X: 518
+ m_Y: 185
+ m_Width: 26
+ m_Height: 42
+ - m_X: 491
+ m_Y: 212
+ m_Width: 26
+ m_Height: 42
+ - m_X: 434
+ m_Y: 216
+ m_Width: 26
+ m_Height: 41
+ - m_X: 406
+ m_Y: 233
+ m_Width: 26
+ m_Height: 41
+ - m_X: 379
+ m_Y: 248
+ m_Width: 26
+ m_Height: 41
+ - m_X: 460
+ m_Y: 234
+ m_Width: 26
+ m_Height: 41
+ - m_X: 432
+ m_Y: 257
+ m_Width: 26
+ m_Height: 41
+ - m_X: 405
+ m_Y: 274
+ m_Width: 26
+ m_Height: 40
+ - m_X: 291
+ m_Y: 229
+ m_Width: 26
+ m_Height: 39
+ - m_X: 268
+ m_Y: 240
+ m_Width: 23
+ m_Height: 41
+ - m_X: 317
+ m_Y: 229
+ m_Width: 26
+ m_Height: 30
+ - m_X: 343
+ m_Y: 229
+ m_Width: 15
+ m_Height: 22
+ - m_X: 343
+ m_Y: 251
+ m_Width: 14
+ m_Height: 52
+ - m_X: 317
+ m_Y: 259
+ m_Width: 26
+ m_Height: 30
+ - m_X: 291
+ m_Y: 268
+ m_Width: 26
+ m_Height: 20
+ - m_X: 268
+ m_Y: 281
+ m_Width: 23
+ m_Height: 40
+ - m_X: 291
+ m_Y: 288
+ m_Width: 26
+ m_Height: 15
+ - m_X: 317
+ m_Y: 289
+ m_Width: 26
+ m_Height: 14
+ - m_X: 357
+ m_Y: 252
+ m_Width: 21
+ m_Height: 41
+ - m_X: 378
+ m_Y: 289
+ m_Width: 25
+ m_Height: 43
+ - m_X: 357
+ m_Y: 293
+ m_Width: 21
+ m_Height: 39
+ - m_X: 237
+ m_Y: 283
+ m_Width: 25
+ m_Height: 41
+ - m_X: 207
+ m_Y: 309
+ m_Width: 25
+ m_Height: 41
+ - m_X: 163
+ m_Y: 315
+ m_Width: 25
+ m_Height: 41
+ - m_X: 188
+ m_Y: 315
+ m_Width: 19
+ m_Height: 41
+ - m_X: 128
+ m_Y: 318
+ m_Width: 25
+ m_Height: 41
+ - m_X: 85
+ m_Y: 343
+ m_Width: 25
+ m_Height: 40
+ - m_X: 64
+ m_Y: 356
+ m_Width: 21
+ m_Height: 25
+ - m_X: 64
+ m_Y: 381
+ m_Width: 21
+ m_Height: 20
+ - m_X: 110
+ m_Y: 343
+ m_Width: 18
+ m_Height: 18
+ - m_X: 31
+ m_Y: 387
+ m_Width: 25
+ m_Height: 39
+ - m_X: 0
+ m_Y: 412
+ m_Width: 25
+ m_Height: 30
+ - m_X: 291
+ m_Y: 303
+ m_Width: 25
+ m_Height: 30
+ - m_X: 262
+ m_Y: 321
+ m_Width: 25
+ m_Height: 30
+ - m_X: 232
+ m_Y: 324
+ m_Width: 25
+ m_Height: 6
+ - m_X: 232
+ m_Y: 330
+ m_Width: 24
+ m_Height: 45
+ - m_X: 207
+ m_Y: 350
+ m_Width: 24
+ m_Height: 45
+ - m_X: 316
+ m_Y: 303
+ m_Width: 24
+ m_Height: 45
+ - m_X: 340
+ m_Y: 303
+ m_Width: 17
+ m_Height: 22
+ - m_X: 340
+ m_Y: 325
+ m_Width: 17
+ m_Height: 22
+ - m_X: 287
+ m_Y: 333
+ m_Width: 24
+ m_Height: 27
+ - m_X: 256
+ m_Y: 351
+ m_Width: 24
+ m_Height: 27
+ - m_X: 231
+ m_Y: 375
+ m_Width: 24
+ m_Height: 22
+ - m_X: 153
+ m_Y: 356
+ m_Width: 24
+ m_Height: 6
+ - m_X: 128
+ m_Y: 359
+ m_Width: 23
+ m_Height: 30
+ - m_X: 110
+ m_Y: 361
+ m_Width: 18
+ m_Height: 17
+ - m_X: 110
+ m_Y: 378
+ m_Width: 18
+ m_Height: 17
+ - m_X: 85
+ m_Y: 383
+ m_Width: 20
+ m_Height: 25
+ - m_X: 56
+ m_Y: 401
+ m_Width: 20
+ m_Height: 20
+ - m_X: 177
+ m_Y: 356
+ m_Width: 20
+ m_Height: 19
+ - m_X: 151
+ m_Y: 362
+ m_Width: 19
+ m_Height: 40
+ - m_X: 128
+ m_Y: 389
+ m_Width: 19
+ m_Height: 30
+ - m_X: 105
+ m_Y: 395
+ m_Width: 19
+ m_Height: 8
+ - m_X: 105
+ m_Y: 403
+ m_Width: 19
+ m_Height: 5
+ - m_X: 170
+ m_Y: 375
+ m_Width: 17
+ m_Height: 19
+ - m_X: 187
+ m_Y: 375
+ m_Width: 17
+ m_Height: 6
+ - m_X: 187
+ m_Y: 381
+ m_Width: 17
+ m_Height: 6
+ - m_X: 187
+ m_Y: 387
+ m_Width: 16
+ m_Height: 16
+ - m_X: 170
+ m_Y: 394
+ m_Width: 14
+ m_Height: 41
+ - m_X: 147
+ m_Y: 402
+ m_Width: 14
+ m_Height: 10
+ - m_X: 147
+ m_Y: 412
+ m_Width: 13
+ m_Height: 52
+ - m_X: 203
+ m_Y: 395
+ m_Width: 13
+ m_Height: 41
+ - m_X: 216
+ m_Y: 395
+ m_Width: 13
+ m_Height: 12
+ - m_X: 184
+ m_Y: 403
+ m_Width: 13
+ m_Height: 10
+ - m_X: 184
+ m_Y: 413
+ m_Width: 12
+ m_Height: 25
+ - m_X: 160
+ m_Y: 435
+ m_Width: 12
+ m_Height: 25
+ m_FreeGlyphRects:
+ - m_X: 172
+ m_Y: 41
+ m_Width: 1
+ m_Height: 8
+ - m_X: 131
+ m_Y: 82
+ m_Width: 1
+ m_Height: 11
+ - m_X: 43
+ m_Y: 117
+ m_Width: 1
+ m_Height: 6
+ - m_X: 214
+ m_Y: 49
+ m_Width: 3
+ m_Height: 2
+ - m_X: 171
+ m_Y: 93
+ m_Width: 1
+ m_Height: 7
+ - m_X: 381
+ m_Y: 41
+ m_Width: 4
+ m_Height: 10
+ - m_X: 299
+ m_Y: 46
+ m_Width: 2
+ m_Height: 45
+ - m_X: 254
+ m_Y: 51
+ m_Width: 5
+ m_Height: 45
+ - m_X: 211
+ m_Y: 100
+ m_Width: 3
+ m_Height: 33
+ - m_X: 130
+ m_Y: 112
+ m_Width: 1
+ m_Height: 32
+ - m_X: 248
+ m_Y: 133
+ m_Width: 6
+ m_Height: 14
+ - m_X: 208
+ m_Y: 141
+ m_Width: 3
+ m_Height: 33
+ - m_X: 167
+ m_Y: 144
+ m_Width: 4
+ m_Height: 38
+ - m_X: 85
+ m_Y: 123
+ m_Width: 3
+ m_Height: 39
+ - m_X: 165
+ m_Y: 185
+ m_Width: 2
+ m_Height: 38
+ - m_X: 203
+ m_Y: 182
+ m_Width: 5
+ m_Height: 41
+ - m_X: 164
+ m_Y: 226
+ m_Width: 1
+ m_Height: 38
+ - m_X: 42
+ m_Y: 158
+ m_Width: 1
+ m_Height: 15
+ - m_X: 119
+ m_Y: 211
+ m_Width: 1
+ m_Height: 30
+ - m_X: 129
+ m_Y: 251
+ m_Width: 1
+ m_Height: 26
+ - m_X: 41
+ m_Y: 207
+ m_Width: 1
+ m_Height: 16
+ - m_X: 68
+ m_Y: 223
+ m_Width: 8
+ m_Height: 32
+ - m_X: 118
+ m_Y: 302
+ m_Width: 1
+ m_Height: 11
+ - m_X: 32
+ m_Y: 248
+ m_Width: 2
+ m_Height: 16
+ - m_X: 64
+ m_Y: 264
+ m_Width: 4
+ m_Height: 42
+ - m_X: 244
+ m_Y: 174
+ m_Width: 4
+ m_Height: 14
+ - m_X: 285
+ m_Y: 147
+ m_Width: 6
+ m_Height: 41
+ - m_X: 207
+ m_Y: 182
+ m_Width: 1
+ m_Height: 42
+ - m_X: 238
+ m_Y: 224
+ m_Width: 6
+ m_Height: 5
+ - m_X: 198
+ m_Y: 264
+ m_Width: 2
+ m_Height: 12
+ - m_X: 464
+ m_Y: 30
+ m_Width: 1
+ m_Height: 11
+ - m_X: 420
+ m_Y: 51
+ m_Width: 5
+ m_Height: 20
+ - m_X: 419
+ m_Y: 57
+ m_Width: 6
+ m_Height: 14
+ - m_X: 379
+ m_Y: 90
+ m_Width: 2
+ m_Height: 8
+ - m_X: 418
+ m_Y: 98
+ m_Width: 1
+ m_Height: 14
+ - m_X: 337
+ m_Y: 91
+ m_Width: 4
+ m_Height: 17
+ - m_X: 336
+ m_Y: 100
+ m_Width: 5
+ m_Height: 8
+ - m_X: 298
+ m_Y: 138
+ m_Width: 1
+ m_Height: 9
+ - m_X: 328
+ m_Y: 147
+ m_Width: 8
+ m_Height: 2
+ - m_X: 358
+ m_Y: 149
+ m_Width: 8
+ m_Height: 12
+ - m_X: 503
+ m_Y: 41
+ m_Width: 1
+ m_Height: 8
+ - m_X: 770
+ m_Y: 0
+ m_Width: 254
+ m_Height: 1024
+ - m_X: 741
+ m_Y: 52
+ m_Width: 283
+ m_Height: 972
+ - m_X: 741
+ m_Y: 30
+ m_Width: 1
+ m_Height: 994
+ - m_X: 683
+ m_Y: 28
+ m_Width: 1
+ m_Height: 14
+ - m_X: 711
+ m_Y: 82
+ m_Width: 313
+ m_Height: 942
+ - m_X: 711
+ m_Y: 42
+ m_Width: 2
+ m_Height: 982
+ - m_X: 653
+ m_Y: 29
+ m_Width: 1
+ m_Height: 40
+ - m_X: 681
+ m_Y: 93
+ m_Width: 343
+ m_Height: 931
+ - m_X: 681
+ m_Y: 69
+ m_Width: 2
+ m_Height: 955
+ - m_X: 622
+ m_Y: 30
+ m_Width: 2
+ m_Height: 40
+ - m_X: 650
+ m_Y: 70
+ m_Width: 3
+ m_Height: 954
+ - m_X: 563
+ m_Y: 33
+ m_Width: 1
+ m_Height: 38
+ - m_X: 532
+ m_Y: 49
+ m_Width: 2
+ m_Height: 25
+ - m_X: 619
+ m_Y: 71
+ m_Width: 3
+ m_Height: 953
+ - m_X: 619
+ m_Y: 120
+ m_Width: 405
+ m_Height: 904
+ - m_X: 494
+ m_Y: 59
+ m_Width: 9
+ m_Height: 31
+ - m_X: 493
+ m_Y: 82
+ m_Width: 10
+ m_Height: 8
+ - m_X: 448
+ m_Y: 112
+ m_Width: 1
+ m_Height: 11
+ - m_X: 409
+ m_Y: 115
+ m_Width: 9
+ m_Height: 38
+ - m_X: 521
+ m_Y: 90
+ m_Width: 11
+ m_Height: 27
+ - m_X: 560
+ m_Y: 74
+ m_Width: 3
+ m_Height: 43
+ - m_X: 590
+ m_Y: 154
+ m_Width: 434
+ m_Height: 870
+ - m_X: 590
+ m_Y: 134
+ m_Width: 1
+ m_Height: 890
+ - m_X: 492
+ m_Y: 122
+ m_Width: 1
+ m_Height: 9
+ - m_X: 437
+ m_Y: 153
+ m_Width: 11
+ m_Height: 22
+ - m_X: 407
+ m_Y: 179
+ m_Width: 2
+ m_Height: 13
+ - m_X: 519
+ m_Y: 131
+ m_Width: 2
+ m_Height: 14
+ - m_X: 563
+ m_Y: 185
+ m_Width: 461
+ m_Height: 839
+ - m_X: 546
+ m_Y: 145
+ m_Width: 3
+ m_Height: 25
+ - m_X: 491
+ m_Y: 163
+ m_Width: 1
+ m_Height: 10
+ - m_X: 518
+ m_Y: 173
+ m_Width: 1
+ m_Height: 12
+ - m_X: 544
+ m_Y: 185
+ m_Width: 2
+ m_Height: 839
+ - m_X: 544
+ m_Y: 221
+ m_Width: 480
+ m_Height: 803
+ - m_X: 517
+ m_Y: 227
+ m_Width: 507
+ m_Height: 797
+ - m_X: 517
+ m_Y: 212
+ m_Width: 1
+ m_Height: 812
+ - m_X: 434
+ m_Y: 192
+ m_Width: 3
+ m_Height: 24
+ - m_X: 406
+ m_Y: 207
+ m_Width: 1
+ m_Height: 26
+ - m_X: 460
+ m_Y: 216
+ m_Width: 4
+ m_Height: 18
+ - m_X: 486
+ m_Y: 254
+ m_Width: 538
+ m_Height: 770
+ - m_X: 486
+ m_Y: 234
+ m_Width: 5
+ m_Height: 790
+ - m_X: 432
+ m_Y: 233
+ m_Width: 2
+ m_Height: 24
+ - m_X: 458
+ m_Y: 257
+ m_Width: 2
+ m_Height: 767
+ - m_X: 458
+ m_Y: 275
+ m_Width: 566
+ m_Height: 749
+ - m_X: 405
+ m_Y: 248
+ m_Width: 1
+ m_Height: 26
+ - m_X: 431
+ m_Y: 298
+ m_Width: 593
+ m_Height: 726
+ - m_X: 431
+ m_Y: 274
+ m_Width: 1
+ m_Height: 750
+ - m_X: 291
+ m_Y: 191
+ m_Width: 7
+ m_Height: 38
+ - m_X: 268
+ m_Y: 229
+ m_Width: 7
+ m_Height: 11
+ - m_X: 357
+ m_Y: 251
+ m_Width: 1
+ m_Height: 1
+ - m_X: 403
+ m_Y: 314
+ m_Width: 621
+ m_Height: 710
+ - m_X: 403
+ m_Y: 289
+ m_Width: 2
+ m_Height: 735
+ - m_X: 378
+ m_Y: 252
+ m_Width: 1
+ m_Height: 37
+ - m_X: 237
+ m_Y: 259
+ m_Width: 1
+ m_Height: 24
+ - m_X: 163
+ m_Y: 277
+ m_Width: 1
+ m_Height: 38
+ - m_X: 128
+ m_Y: 313
+ m_Width: 1
+ m_Height: 5
+ - m_X: 118
+ m_Y: 322
+ m_Width: 10
+ m_Height: 21
+ - m_X: 31
+ m_Y: 371
+ m_Width: 1
+ m_Height: 16
+ - m_X: 25
+ m_Y: 412
+ m_Width: 6
+ m_Height: 612
+ - m_X: 262
+ m_Y: 283
+ m_Width: 6
+ m_Height: 38
+ - m_X: 232
+ m_Y: 309
+ m_Width: 5
+ m_Height: 15
+ - m_X: 340
+ m_Y: 347
+ m_Width: 684
+ m_Height: 677
+ - m_X: 357
+ m_Y: 332
+ m_Width: 667
+ m_Height: 692
+ - m_X: 287
+ m_Y: 321
+ m_Width: 4
+ m_Height: 12
+ - m_X: 311
+ m_Y: 348
+ m_Width: 713
+ m_Height: 676
+ - m_X: 311
+ m_Y: 333
+ m_Width: 5
+ m_Height: 691
+ - m_X: 257
+ m_Y: 324
+ m_Width: 5
+ m_Height: 27
+ - m_X: 256
+ m_Y: 330
+ m_Width: 6
+ m_Height: 21
+ - m_X: 280
+ m_Y: 360
+ m_Width: 744
+ m_Height: 664
+ - m_X: 280
+ m_Y: 351
+ m_Width: 7
+ m_Height: 673
+ - m_X: 231
+ m_Y: 350
+ m_Width: 1
+ m_Height: 25
+ - m_X: 255
+ m_Y: 378
+ m_Width: 769
+ m_Height: 646
+ - m_X: 255
+ m_Y: 375
+ m_Width: 1
+ m_Height: 649
+ - m_X: 153
+ m_Y: 318
+ m_Width: 10
+ m_Height: 38
+ - m_X: 56
+ m_Y: 387
+ m_Width: 8
+ m_Height: 14
+ - m_X: 76
+ m_Y: 401
+ m_Width: 9
+ m_Height: 623
+ - m_X: 151
+ m_Y: 359
+ m_Width: 2
+ m_Height: 3
+ - m_X: 76
+ m_Y: 408
+ m_Width: 52
+ m_Height: 616
+ - m_X: 105
+ m_Y: 383
+ m_Width: 5
+ m_Height: 12
+ - m_X: 124
+ m_Y: 395
+ m_Width: 4
+ m_Height: 629
+ - m_X: 170
+ m_Y: 362
+ m_Width: 7
+ m_Height: 13
+ - m_X: 197
+ m_Y: 356
+ m_Width: 10
+ m_Height: 19
+ - m_X: 147
+ m_Y: 389
+ m_Width: 4
+ m_Height: 13
+ - m_X: 0
+ m_Y: 464
+ m_Width: 1024
+ m_Height: 560
+ - m_X: 0
+ m_Y: 442
+ m_Width: 147
+ m_Height: 582
+ - m_X: 25
+ m_Y: 426
+ m_Width: 122
+ m_Height: 598
+ - m_X: 56
+ m_Y: 421
+ m_Width: 91
+ m_Height: 603
+ - m_X: 76
+ m_Y: 419
+ m_Width: 71
+ m_Height: 605
+ - m_X: 204
+ m_Y: 356
+ m_Width: 3
+ m_Height: 39
+ - m_X: 203
+ m_Y: 387
+ m_Width: 4
+ m_Height: 8
+ - m_X: 216
+ m_Y: 407
+ m_Width: 808
+ m_Height: 617
+ - m_X: 229
+ m_Y: 397
+ m_Width: 795
+ m_Height: 627
+ - m_X: 229
+ m_Y: 395
+ m_Width: 2
+ m_Height: 629
+ - m_X: 184
+ m_Y: 394
+ m_Width: 3
+ m_Height: 9
+ - m_X: 197
+ m_Y: 403
+ m_Width: 6
+ m_Height: 621
+ - m_X: 196
+ m_Y: 436
+ m_Width: 828
+ m_Height: 588
+ - m_X: 196
+ m_Y: 413
+ m_Width: 7
+ m_Height: 611
+ - m_X: 161
+ m_Y: 402
+ m_Width: 9
+ m_Height: 33
+ - m_X: 160
+ m_Y: 412
+ m_Width: 10
+ m_Height: 23
+ - m_X: 160
+ m_Y: 460
+ m_Width: 864
+ m_Height: 564
+ - m_X: 172
+ m_Y: 438
+ m_Width: 852
+ m_Height: 586
+ - m_X: 172
+ m_Y: 435
+ m_Width: 12
+ m_Height: 589
+ m_fontInfo:
+ Name:
+ PointSize: 0
+ Scale: 0
+ CharacterCount: 0
+ LineHeight: 0
+ Baseline: 0
+ Ascender: 0
+ CapHeight: 0
+ Descender: 0
+ CenterLine: 0
+ SuperscriptOffset: 0
+ SubscriptOffset: 0
+ SubSize: 0
+ Underline: 0
+ UnderlineThickness: 0
+ strikethrough: 0
+ strikethroughThickness: 0
+ TabWidth: 0
+ Padding: 0
+ AtlasWidth: 0
+ AtlasHeight: 0
+ atlas: {fileID: 0}
+ m_AtlasWidth: 1024
+ m_AtlasHeight: 1024
+ m_AtlasPadding: 1
+ m_AtlasRenderMode: 4121
+ m_glyphInfoList: []
+ m_KerningTable:
+ kerningPairs: []
+ m_FontFeatureTable:
+ m_GlyphPairAdjustmentRecords: []
+ fallbackFontAssets: []
+ m_FallbackFontAssetTable: []
+ m_CreationSettings:
+ sourceFontFileName:
+ sourceFontFileGUID: 49342641ea2b7e6429da3245744bb92b
+ pointSizeSamplingMode: 1
+ pointSize: 55
+ padding: 1
+ packingMode: 0
+ atlasWidth: 1024
+ atlasHeight: 1024
+ characterSetSelectionMode: 6
+ characterSequence: 20-7E,A0-FF,2013-2015,2018-201A,201C-201E,2020-2022,2026,2030,2039-203A,2044,20AC,2122
+ referencedFontAssetGUID:
+ referencedTextAssetGUID:
+ fontStyle: 0
+ fontStyleModifier: 0
+ renderMode: 4121
+ includeFontFeatures: 0
+ m_FontWeightTable:
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ - regularTypeface: {fileID: 0}
+ italicTypeface: {fileID: 0}
+ fontWeights: []
+ normalStyle: 0
+ normalSpacingOffset: 0
+ boldStyle: 0.75
+ boldSpacing: 7
+ italicStyle: 35
+ tabSize: 10
+--- !u!21 &7453642021753212536
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Lato-Regular Material
+ m_Shader: {fileID: 4800000, guid: 128e987d567d4e2c824d754223b3f3b0, type: 3}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _FaceTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: -2340667833886341526}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _ColorMask: 15
+ - _MaskSoftnessX: 0
+ - _MaskSoftnessY: 0
+ - _Stencil: 0
+ - _StencilComp: 8
+ - _StencilOp: 0
+ - _StencilReadMask: 255
+ - _StencilWriteMask: 255
+ - _VertexOffsetX: 0
+ - _VertexOffsetY: 0
+ m_Colors:
+ - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
+ - _FaceColor: {r: 1, g: 1, b: 1, a: 1}
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset.meta b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset.meta
new file mode 100644
index 0000000..4612655
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1ffb8c3515fb6dc4688eff5a7e48200f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf
new file mode 100644
index 0000000..33eba8b
Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf differ
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf.meta b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf.meta
new file mode 100644
index 0000000..d27c6d5
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf.meta
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 49342641ea2b7e6429da3245744bb92b
+TrueTypeFontImporter:
+ externalObjects: {}
+ serializedVersion: 4
+ fontSize: 16
+ forceTextureCase: -2
+ characterSpacing: 0
+ characterPadding: 1
+ includeFontData: 1
+ fontName: Lato
+ fontNames:
+ - Lato
+ fallbackFontReferences: []
+ customCharacters:
+ fontRenderingMode: 0
+ ascentCalculationMode: 1
+ useLegacyBoundsCalculation: 0
+ shouldRoundAdvanceValue: 1
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt b/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt
new file mode 100644
index 0000000..98383e3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt
@@ -0,0 +1,93 @@
+Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato"
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt.meta b/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt.meta
new file mode 100644
index 0000000..0ec333e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 00c3ff69a8133b34c9df87ba6dd26bf2
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts.meta b/Assets/Plugins/Febucci/Text Animator/Example/Scripts.meta
new file mode 100644
index 0000000..e438911
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3319478745348604ea0630be39d375db
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime.meta b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime.meta
new file mode 100644
index 0000000..373a7fc
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dba2e994350d1f14cb2e667e48dee952
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs
new file mode 100644
index 0000000..644b601
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs
@@ -0,0 +1,53 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Examples
+{
+ [AddComponentMenu("")]
+ public class DefaultEffectsExample : MonoBehaviour
+ {
+ public TypewriterCore typewriter;
+ TextAnimatorSettings settings;
+
+ private void Awake()
+ {
+ UnityEngine.Assertions.Assert.IsNotNull(typewriter, $"Text Animator Player component is null in {gameObject.name}");
+ settings = TextAnimatorSettings.Instance;
+ UnityEngine.Assertions.Assert.IsNotNull(settings, $"Text Animator Settings is null.");
+ }
+
+ string AddEffect(TextAnimatorSettings.Category category, string tag) where T: ScriptableObject
+ {
+ return $"{category.openingSymbol}{tag}{category.closingSymbol}{tag}{category.openingSymbol}/{category.closingSymbol}, ";
+ }
+
+ private void Start()
+ {
+ const char quote = '"';
+ //builds the text with all the default tags
+ string builtText = "You can add effects by using rich text tags." +
+ $"\nExample: writing {quote}I'm cold{quote} will result in {quote}I'm cold{quote}." +
+ $"\n\n Effects that animate through time are called {quote}Behaviors{quote}, and the default tags are: ";
+
+ foreach (var effect in typewriter.TextAnimator.DatabaseBehaviors.Data)
+ {
+ if(!effect) continue;
+ builtText += AddEffect(settings.behaviors, effect.TagID);
+ }
+
+ builtText += $"\n\nEffects that animate letters while they appear on screen are called {quote}Appearances{quote} and the default tags are: ";
+
+ foreach (var effect in typewriter.TextAnimator.DatabaseAppearances.Data)
+ {
+ if(!effect) continue;
+ builtText += AddEffect(settings.appearances, effect.TagID);
+ }
+
+ //shows the text dynamically (typewriter like)
+ typewriter.ShowText(builtText);
+
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs.meta b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs.meta
new file mode 100644
index 0000000..9df1e3f
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b97a825c489d94194a088dd18fedd2f0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/ExampleEvents.cs b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/ExampleEvents.cs
new file mode 100644
index 0000000..4c421ef
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/ExampleEvents.cs
@@ -0,0 +1,168 @@
+using System.Collections;
+using Febucci.UI.Core;
+using Febucci.UI.Core.Parsing;
+using UnityEngine;
+
+namespace Febucci.UI.Examples
+{
+ [AddComponentMenu(""), DisallowMultipleComponent]
+ class ExampleEvents : MonoBehaviour
+ {
+ // ---- PART OF THE SCRIPT THAT YOU'RE PROBABLY INTERESTED IT ----
+
+ void Start()
+ {
+ //Subscribe to the event
+ typewriter.onMessage.AddListener(OnMessage);
+
+
+ dialogueIndex = 0;
+ CurrentLineShown = false;
+ typewriter.ShowText(dialoguesLines[dialogueIndex]);
+ }
+
+ void OnDestroy()
+ {
+ if(typewriter) typewriter.onMessage.RemoveListener(OnMessage);
+ }
+
+ bool TryGetInt(string parameter, out int result)
+ {
+
+ if (FormatUtils.TryGetFloat(parameter, 0, out float resultFloat))
+ {
+ result = (int)resultFloat;
+ return true;
+ }
+
+ result = -1;
+ return false;
+ }
+ void OnMessage(EventMarker eventData)
+ {
+ switch (eventData.name)
+ {
+ case "face":
+ if (eventData.parameters.Length <= 0)
+ {
+ Debug.LogWarning($"You need to specify a sprite index! Dialogue: {dialogueIndex}");
+ return;
+ }
+
+ if (TryGetInt(eventData.parameters[0], out int spriteIndex))
+ {
+ if (spriteIndex >= 0 && spriteIndex < faces.Length)
+ {
+ faceRenderer.sprite = faces[spriteIndex];
+ }
+ else
+ {
+ Debug.Log($"Sprite index was out of range. Dialogue: {dialogueIndex}");
+ }
+ }
+ break;
+
+ case "crate":
+ if (eventData.parameters.Length <= 0)
+ {
+ Debug.LogWarning($"You need to specify a crate index! Dialogue: {dialogueIndex}");
+ return;
+ }
+
+ if (TryGetInt(eventData.parameters[0], out int crateIndex))
+ {
+ if (crateIndex >= 0 && crateIndex < crates.Length)
+ {
+ StartCoroutine(AnimateCrate(crateIndex));
+ }
+ else
+ {
+ Debug.Log($"Sprite index was out of range. Dialogue: {dialogueIndex}");
+ }
+ }
+ break;
+ }
+ }
+
+ // ---- OTHER PART OF THE SCRIPT ----
+ // This makes the script run faking a dialogue system
+ [SerializeField] TypewriterCore typewriter;
+ [SerializeField, TextArea(1, 5)] string[] dialoguesLines;
+ [SerializeField] Sprite[] faces;
+ [SerializeField] SpriteRenderer faceRenderer;
+ [SerializeField] GameObject continueText;
+ [SerializeField] Transform[] crates;
+ Vector3[] cratesInitialScale;
+
+ int dialogueIndex = 0;
+ int dialogueLength;
+ bool currentLineShown;
+
+ bool CurrentLineShown
+ {
+ get => currentLineShown;
+ set
+ {
+ currentLineShown = value;
+ continueText.SetActive(value);
+ }
+ }
+
+ void Awake()
+ {
+ cratesInitialScale = new Vector3[crates.Length];
+ for (int i = 0; i < crates.Length; i++)
+ {
+ cratesInitialScale[i] = crates[i].localScale;
+ }
+
+ dialogueLength = dialoguesLines.Length;
+ typewriter.onTextShowed.AddListener(() => CurrentLineShown = true);
+ }
+
+ void ContinueSequence()
+ {
+ CurrentLineShown = false;
+ dialogueIndex++;
+ if(dialogueIndexfreezing ”.
+
+ Try writing a text by experimenting with the following
+ tags: , like “ I'm joking hehe now
+ I'm scared ”, then enter Unity’s Play mode.
+
+✅ Your text is animating letters based on the effects you’ve written.
+
+2. Showing letters dynamically
+
+To show letters dynamically (like a typewriter):
+ Add a TypewriterByCharacter component on the same GameObject. (In Unity’s Edit
+ Mode)
+ Tell TextAnimator that you want to use the typewriter. For now, let’s do it the super
+ simple way: On the TextAnimator_TMP component, set “Typewriter Starts
+ Automatically” value to true. Then enter Play mode.
+
+✅ Your text is now shown dynamically, like a typewriter.
+
+Example scenes
+
+In addition to the quick and simple Online documentation, Text Animator contains
+multiple example scenes you can visit and learn from, each one showing specific
+features.
+[I suggest starting from the scene named “00-Welcome”]
+P.S. You can delete (or avoid importing) the Example Scenes folder if you don’t need
+them in your project.
+
+Text Animator for Unity 2.X 2
+That’s it for the quick start! For every feature in detail, please visit the following:
+https://www.febucci.com/text-animator-unity/docs/
+
+In case you need any help, please do not hesitate to contact us through:
+https://www.febucci.com/text-animator-unity/support/
+
+❤ Thank you so much! Have fun bringing your texts to life!
+
+Text Animator for Unity 2.X 3
+
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Quick Start [Offline].pdf.meta b/Assets/Plugins/Febucci/Text Animator/Quick Start [Offline].pdf.meta
new file mode 100644
index 0000000..15f65ef
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Quick Start [Offline].pdf.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f2803ca31271d4631b7dcb81cccea0ee
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts.meta b/Assets/Plugins/Febucci/Text Animator/Scripts.meta
new file mode 100644
index 0000000..93299ad
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a47363b2fbe9e2d45b00c72c79679fc3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor.meta
new file mode 100644
index 0000000..4c76f29
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 834807df07adbb843a9e2270df867e8f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers.meta
new file mode 100644
index 0000000..3ffd24c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4092478b3f6ba408384c2224ec1edc58
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components.meta
new file mode 100644
index 0000000..2f651bf
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 71fee1318e1eb47f7854704b0697d75d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs
new file mode 100644
index 0000000..64be9e3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs
@@ -0,0 +1,641 @@
+using System.Text;
+using UnityEngine;
+using UnityEditor;
+
+namespace Febucci.UI.Core
+{
+ [CustomEditor(typeof(Core.TAnimCore), true)]
+ class TAnimCoreDrawer : Editor
+ {
+ SerializedProperty m_Script;
+
+ SerializedProperty typewriterStartsAutomatically;
+
+ SerializedProperty referenceFontSize;
+ SerializedProperty useDynamicScaling;
+
+ SerializedProperty timeScale;
+ SerializedProperty animationLoop;
+ SerializedProperty isResettingTimeOnNewText;
+
+
+ SerializedProperty defaultTagsMode;
+ SerializedProperty defaultAppearancesTags;
+ SerializedProperty defaultBehaviorsTags;
+ SerializedProperty defaultDisappearancesTags;
+
+ SerializedProperty useDefaultDatabases;
+
+ SerializedProperty databaseBehaviorsField;
+ DatabaseSharedDrawer databaseBehaviorsDrawer;
+ SerializedProperty databaseAppearancesField;
+ DatabaseSharedDrawer databaseAppearancesDrawer;
+ SerializedProperty databaseActionsField;
+ DatabaseSharedDrawer databaseActionsDrawer;
+
+ Core.TAnimCore script;
+ static string[] excludedProperties = new string[]
+ {
+ "m_Script",
+ "_text",
+ "databaseBehaviors",
+ "databaseAppearances",
+ "defaultAppearancesTags",
+ "defaultBehaviorsTags",
+ "defaultDisappearancesTags",
+ "typewriterStartsAutomatically",
+ nameof(TAnimCore.referenceFontSize),
+ nameof(TAnimCore.useDynamicScaling),
+ nameof(TAnimCore.defaultTagsMode),
+ nameof(TAnimCore.timeScale),
+ nameof(TAnimCore.animationLoop),
+ nameof(TAnimCore.isResettingTimeOnNewText),
+ "databaseActions",
+ "useDefaultDatabases",
+ };
+
+ void OnEnable()
+ {
+ script = (Core.TAnimCore)target;
+
+ m_Script = serializedObject.FindProperty("m_Script");
+
+ typewriterStartsAutomatically = serializedObject.FindProperty("typewriterStartsAutomatically");
+
+ useDefaultDatabases = serializedObject.FindProperty("useDefaultDatabases");
+ databaseBehaviorsField = serializedObject.FindProperty("databaseBehaviors");
+ databaseAppearancesField = serializedObject.FindProperty("databaseAppearances");
+ databaseActionsField = serializedObject.FindProperty("databaseActions");
+
+ databaseBehaviorsDrawer = new DatabaseSharedDrawer();
+ databaseAppearancesDrawer = new DatabaseSharedDrawer();
+ databaseActionsDrawer = new DatabaseSharedDrawer();
+
+ defaultTagsMode = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.defaultTagsMode));
+ defaultAppearancesTags = serializedObject.FindProperty("defaultAppearancesTags");
+ defaultBehaviorsTags = serializedObject.FindProperty("defaultBehaviorsTags");
+ defaultDisappearancesTags = serializedObject.FindProperty("defaultDisappearancesTags");
+
+ referenceFontSize = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.referenceFontSize));
+ useDynamicScaling = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.useDynamicScaling));
+ timeScale = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.timeScale));
+ animationLoop = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.animationLoop));
+ isResettingTimeOnNewText = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.isResettingTimeOnNewText));
+
+ gui_visibleCharacters = new GUIContent("Visible Characters", null,
+ $"Range of visible characters in the text.\nTo modify this via script, set \"{nameof(TAnimCore.firstVisibleCharacter)}\" and \"{nameof(TAnimCore.maxVisibleCharacters)}\"");
+
+ EditorApplication.playModeStateChanged += OnPlayModeChanged;
+ RegisterUndoRedraw();
+ UnregisterPlayback();
+ }
+
+ void OnPlayModeChanged(PlayModeStateChange stateChange)
+ {
+ if(stateChange == PlayModeStateChange.ExitingEditMode)
+ UnregisterPlayback();
+ }
+
+ private void OnDisable()
+ {
+ EditorApplication.playModeStateChanged -= OnPlayModeChanged;
+ UnregisterPlayback();
+ UnregisterUndoRedraw();
+ }
+
+ private void OnDestroy()
+ {
+ UnregisterPlayback();
+ UnregisterUndoRedraw();
+ }
+
+ #region Undo Redo
+
+ private bool undoRedoRegistered;
+
+ void RegisterUndoRedraw()
+ {
+ if (undoRedoRegistered)
+ return;
+
+ undoRedoRegistered = true;
+ Undo.undoRedoPerformed += UndoRedraw;
+ }
+
+ void UndoRedraw()
+ {
+ OnDisable();
+ OnEnable();
+ Repaint();
+ runInEditMode = false;
+ }
+
+ void UnregisterUndoRedraw()
+ {
+ if (!undoRedoRegistered)
+ return;
+
+ undoRedoRegistered = false;
+ Undo.undoRedoPerformed -= UndoRedraw;
+
+ }
+
+
+ #endregion
+
+ #region Playback
+
+ string textBeforePreview;
+ string textDuringPreview;
+
+ private bool runInEditMode;
+ bool isPlaying => Application.isPlaying || runInEditMode;
+
+ private GUIContent gui_visibleCharacters;
+ Vector2 playbackCharsScrollView;
+ bool extraPlaybackControls;
+ void DrawPlayback()
+ {
+ void HookPlaybackEvent()
+ {
+ script.time.RestartTime();
+
+ if (runInEditMode) RegisterPlayback();
+ else UnregisterPlayback();
+ }
+
+ //--- Playback Toolbar ---
+ EditorGUILayout.BeginVertical(EditorStyles.helpBox);
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.LabelField(Application.isPlaying ? "Playback info" : "Preview in Edit Mode", GUILayout.Width(120));
+ GUI.enabled = !Application.isPlaying;
+ if(GUILayout.Button(runInEditMode ? TexturesLoader.StopIcon : TexturesLoader.PlayIcon, EditorStyles.label, GUILayout.Width(20), GUILayout.Height(20)))
+ {
+ runInEditMode = !runInEditMode;
+ HookPlaybackEvent();
+ }
+
+ GUI.enabled = runInEditMode && !Application.isPlaying;
+ if(GUILayout.Button(TexturesLoader.SaveIcon, EditorStyles.label, GUILayout.Width(20), GUILayout.Height(20)))
+ {
+ textBeforePreview = textDuringPreview;
+ runInEditMode = false;
+ HookPlaybackEvent();
+ }
+ GUI.enabled = true;
+
+ EditorGUILayout.EndHorizontal();
+
+ //---Visible characters---
+ if (isPlaying)
+ {
+ //---Text---
+ if (!Application.isPlaying)
+ {
+ EditorGUI.BeginChangeCheck();
+
+ textDuringPreview = EditorGUILayout.TextArea(textDuringPreview, GUILayout.MinHeight(50));
+ if (EditorGUI.EndChangeCheck())
+ {
+ script.SetText(textDuringPreview);
+ EditorUtility.SetDirty(script);
+ }
+ }
+
+ //---Visible characters---
+ int charCount = script.CharactersCount;
+
+ EditorGUILayout.BeginVertical(EditorStyles.helpBox);
+ //First visible character
+ EditorGUI.BeginChangeCheck();
+ float minValue = script.firstVisibleCharacter;
+ float maxValue = script.maxVisibleCharacters;
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.MinMaxSlider(gui_visibleCharacters, ref minValue, ref maxValue, 0, charCount);
+ if (EditorGUI.EndChangeCheck())
+ {
+ script.firstVisibleCharacter = Mathf.RoundToInt(minValue);
+ script.maxVisibleCharacters = Mathf.RoundToInt(maxValue);
+ }
+
+ EditorGUILayout.Space();
+ int intMinValue = script.firstVisibleCharacter;
+ int intMaxValue = script.maxVisibleCharacters;
+ EditorGUI.BeginChangeCheck();
+ intMinValue = EditorGUILayout.DelayedIntField(GUIContent.none, intMinValue, GUILayout.Width(30));
+ EditorGUILayout.LabelField("/", GUILayout.Width(10));
+ intMaxValue = EditorGUILayout.DelayedIntField(GUIContent.none, intMaxValue, GUILayout.Width(30));
+ if(EditorGUI.EndChangeCheck())
+ {
+ script.firstVisibleCharacter = Mathf.Clamp(intMinValue, 0, charCount);
+ script.maxVisibleCharacters = Mathf.Clamp(intMaxValue, 0, charCount);
+ }
+
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.PrefixLabel("Time passed:");
+ if(GUILayout.Button(TexturesLoader.RestartIcon, EditorStyles.label, GUILayout.Width(20), GUILayout.Height(20)))
+ {
+ script.time.RestartTime();
+ }
+ EditorGUILayout.LabelField(script.time.timeSinceStart.ToString("F2"), EditorStyles.boldLabel);
+
+ EditorGUILayout.EndHorizontal();
+
+ GUI.color = extraPlaybackControls ? Color.gray : Color.white;
+ if (GUILayout.Button("Extra Visibility Controls", EditorStyles.helpBox))
+ {
+ extraPlaybackControls = !extraPlaybackControls;
+ }
+ GUI.color = Color.white;
+
+ if (extraPlaybackControls)
+ {
+ const float boxSize = 12;
+
+ if(script.WordsCount > 20)
+ EditorGUILayout.HelpBox("Displaying only the first 20 words to optimize performance", MessageType.None);
+
+ playbackCharsScrollView = EditorGUILayout.BeginScrollView(playbackCharsScrollView);
+
+ EditorGUILayout.BeginHorizontal();
+ for (int w = 0; w < script.WordsCount && w < 20; w++) //max X words for performance
+ {
+ EditorGUILayout.BeginVertical();
+ if (GUILayout.Button(script.Words[w].text, EditorStyles.miniButton))
+ {
+ script.SetVisibilityWord(w, !script.Characters[script.Words[w].firstCharacterIndex].isVisible);
+ }
+
+ EditorGUILayout.BeginHorizontal();
+ for (int i = script.Words[w].firstCharacterIndex; i <= script.Words[w].lastCharacterIndex; i++)
+ {
+ script.Characters[i].isVisible = EditorGUILayout.Toggle(script.Characters[i].isVisible,
+ GUILayout.Width(boxSize));
+ }
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.EndVertical();
+ }
+ EditorGUILayout.EndHorizontal();
+ EditorGUILayout.EndScrollView();
+ }
+
+ EditorGUILayout.EndVertical();
+ }
+
+ EditorGUILayout.EndVertical();
+ }
+
+ bool registeredPlayback;
+
+ void RegisterPlayback()
+ {
+ if (registeredPlayback) return;
+ registeredPlayback = true;
+
+ if (script)
+ {
+ textBeforePreview = script.GetOriginalTextFromSource();
+ textDuringPreview = textBeforePreview;
+ if (textDuringPreview.StartsWith(""))
+ textDuringPreview = textDuringPreview.Remove(0, 19);
+
+ //resets text and databases regardless
+ script.ForceDatabaseRefresh();
+ script.SetText(textDuringPreview);
+ }
+
+ lastTime = EditorApplication.timeSinceStartup;
+ EditorApplication.update += UpdatePlayback;
+ }
+
+ void UnregisterPlayback()
+ {
+ if (!registeredPlayback) return;
+ registeredPlayback = false;
+
+ if (script)
+ {
+ // unfocus text area field to prevent having the same text when it appears again
+ if (textDuringPreview != string.Empty)
+ GUIUtility.keyboardControl = -1;
+
+ script.SetTextToSource(textBeforePreview);
+ textBeforePreview = string.Empty;
+ textDuringPreview = string.Empty;
+ }
+
+ EditorApplication.update -= UpdatePlayback;
+ }
+
+ private double lastTime = 0;
+ void UpdatePlayback()
+ {
+ script.Animate((float)(EditorApplication.timeSinceStartup - lastTime));
+ lastTime = EditorApplication.timeSinceStartup;
+ EditorApplication.QueuePlayerLoopUpdate();
+ Repaint();
+ }
+
+ #endregion
+
+ #region Default Tags
+ bool drawDefaultBehaviorTags = false;
+ bool drawDefaultAppearancesTags = false;
+ bool drawDefaultDisappearancesTags = false;
+
+ void ForceDatabaseRefresh()
+ {
+ serializedObject.ApplyModifiedProperties();
+ script.ForceDatabaseRefresh();
+ }
+
+ void DrawDefaultTags()
+ {
+ const string helpConstantTags = "How many of these effects will be applied to the entire text";
+ const string helpFallbackTags = "How many of these effects will be applied to a letter, in case there aren't others of the same category.";
+
+ void DrawDefaultArray(ref bool enabledOption, string name, SerializedProperty array,
+ Database database) where T : ScriptableObject, ITagProvider
+ {
+ int size = array.arraySize;
+ EditorGUILayout.BeginHorizontal();
+ enabledOption = EditorGUILayout.Foldout(enabledOption, name + $" [{size} enabled]", true);
+
+ bool areAllTagsValid = true;
+
+ bool IsTagValid(string tag)
+ {
+ // hackyly returns valid on an empty tag, to allow user to add new tags without error
+ return string.IsNullOrEmpty(tag) ||
+ database.ContainsKey(tag.Split(' ')[0]); //splits in case of attributes
+ }
+
+ // Displays icon if any of the tags is not found in the database
+ if (database)
+ {
+
+ for (int i = 0; i < array.arraySize && areAllTagsValid; i++)
+ {
+ if (!IsTagValid(array.GetArrayElementAtIndex(i).stringValue)) areAllTagsValid = false;
+ }
+
+ if (!areAllTagsValid)
+ {
+ GUILayout.Box(TexturesLoader.WarningIcon, EditorStyles.label, GUILayout.Width(20),
+ GUILayout.Height(20));
+ }
+ }
+
+ EditorGUILayout.EndHorizontal();
+ if (enabledOption)
+ {
+ EditorGUI.indentLevel++; //--begin of foldout
+
+ if (!areAllTagsValid)
+ {
+ StringBuilder sb = new StringBuilder();
+ foreach (var effect in database.Data)
+ {
+ if(!effect) continue;
+ if(string.IsNullOrEmpty(effect.TagID)) continue;
+ sb.Append(effect.TagID);
+ sb.Append(" ");
+ }
+
+ EditorGUILayout.HelpBox(
+ $"The tags with the warning icons will not be recognized by Text Animator. Accepted tags: {sb}",
+ MessageType.Warning);
+ }
+
+ GUI.enabled = false;
+ EditorGUILayout.LabelField(
+ (defaultTagsMode.intValue == (int)Core.TAnimCore.DefaultTagsMode.Fallback
+ ? helpFallbackTags
+ : helpConstantTags), EditorStyles.wordWrappedMiniLabel);
+ GUI.enabled = true;
+
+ //Edits array size
+ EditorGUI.BeginChangeCheck();
+ size = EditorGUILayout.IntField("Effects Count", size);
+ if (EditorGUI.EndChangeCheck())
+ {
+ bool increasing = size > array.arraySize;
+ size = Mathf.Clamp(size, 0, size + 1);
+ array.arraySize = size;
+
+ if (increasing && size > 1) //new element is empty
+ {
+ array.GetArrayElementAtIndex(size - 1).stringValue = string.Empty;
+ }
+
+ ForceDatabaseRefresh();
+ }
+
+ Vector2 scrollPos = Vector2.zero;
+ if (size > 0)
+ {
+ GUI.enabled = false;
+ EditorGUILayout.LabelField(
+ "Choose one effect per array element, e.g. 'wave'.\nModifiers are also accepted, e.g. 'wave a=2'",
+ EditorStyles.wordWrappedMiniLabel);
+ GUI.enabled = true;
+ EditorGUI.indentLevel++; //--begin of array
+
+ GUIContent temp = new GUIContent();
+ string tempString;
+ for (int i = 0; i < array.arraySize; i++)
+ {
+ var element = array.GetArrayElementAtIndex(i);
+ temp.text = "Effect #" + (i + 1);
+ tempString = element.stringValue;
+ // Displays a nice set of button the user can choose recognized tags from
+
+ EditorGUILayout.BeginHorizontal();
+ EditorGUI.BeginChangeCheck();
+ tempString = EditorGUILayout.DelayedTextField(temp, tempString);
+ if (EditorGUI.EndChangeCheck())
+ {
+ element.stringValue = tempString;
+ ForceDatabaseRefresh();
+ }
+
+ if (database && !IsTagValid(tempString))
+ {
+ GUILayout.Box(TexturesLoader.WarningIcon, EditorStyles.label, GUILayout.Width(20),
+ GUILayout.Height(20));
+ }
+
+ EditorGUILayout.EndHorizontal();
+ }
+
+ EditorGUI.indentLevel--; //--end of array
+ }
+
+ EditorGUI.indentLevel--; //--end of foldout
+ }
+ }
+
+ EditorGUILayout.LabelField("Default Tags", EditorStyles.boldLabel);
+ EditorGUI.indentLevel++;
+
+ EditorGUI.BeginChangeCheck();
+ EditorGUILayout.PropertyField(defaultTagsMode, true);
+ if(EditorGUI.EndChangeCheck())
+ ForceDatabaseRefresh();
+
+ if (useDefaultDatabases.boolValue)
+ {
+ var settings = TextAnimatorSettings.Instance;
+ if (settings)
+ {
+ DrawDefaultArray(ref drawDefaultAppearancesTags, "Appearances", defaultAppearancesTags, settings.appearances.defaultDatabase);
+ DrawDefaultArray(ref drawDefaultBehaviorTags, "Behaviors", defaultBehaviorsTags, settings.behaviors.defaultDatabase);
+ DrawDefaultArray(ref drawDefaultDisappearancesTags, "Disappearances", defaultDisappearancesTags, settings.appearances.defaultDatabase);
+ }
+ }
+ else
+ {
+ DrawDefaultArray(ref drawDefaultAppearancesTags, "Appearances", defaultAppearancesTags, script.DatabaseAppearances);
+ DrawDefaultArray(ref drawDefaultBehaviorTags, "Behaviors", defaultBehaviorsTags, script.DatabaseBehaviors);
+ DrawDefaultArray(ref drawDefaultDisappearancesTags, "Disappearances", defaultDisappearancesTags, script.DatabaseAppearances);
+ }
+
+ EditorGUI.indentLevel--;
+ }
+#endregion
+
+ #region Databases
+ bool editBehaviors = false;
+ bool editAppearances = false;
+ bool editActions = false;
+ SerializedObject settingsObject;
+
+ void DrawDatabases()
+ {
+ EditorGUILayout.LabelField("Edit Effects & Actions", EditorStyles.boldLabel);
+ EditorGUI.indentLevel++;
+
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.PropertyField(useDefaultDatabases);
+ GUI.enabled = false;
+ EditorGUILayout.LabelField(useDefaultDatabases.boolValue ? "Editing databases for every component that uses default settings." : "Editing databases assigned only to this component.", EditorStyles.wordWrappedMiniLabel);
+ GUI.enabled = true;
+ EditorGUILayout.EndHorizontal();
+
+ void DrawDatabaseField(ref bool foldoutToggle, string foldoutName, SerializedProperty field, DatabaseSharedDrawer drawer)
+ {
+ foldoutToggle = EditorGUILayout.Foldout(foldoutToggle, foldoutName, true);
+
+ if (foldoutToggle)
+ {
+ EditorGUI.indentLevel++;
+ EditorGUI.BeginChangeCheck();
+ EditorGUILayout.PropertyField(field);
+ if (EditorGUI.EndChangeCheck())
+ ForceDatabaseRefresh();
+ drawer.OnInspectorGUI(field);
+ EditorGUI.indentLevel--;
+ }
+ }
+
+ if (useDefaultDatabases.boolValue)
+ {
+ var settings = TextAnimatorSettings.Instance;
+ if (!settings)
+ {
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.HelpBox("Text Animator Settings not found. Please re-run the setup wizard or click the following button.", MessageType.Error);
+ if (GUILayout.Button("Fix it for me", GUILayout.Width(80)))
+ {
+ TextAnimatorSetupWindow.FixSettingsFileNotFound();
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+ else
+ {
+ if(settingsObject == null) settingsObject = new SerializedObject(settings);
+
+ //Draws default settings instead
+ SerializedProperty databaseBehaviorsField = settingsObject.FindProperty(nameof(settings.behaviors)).FindPropertyRelative(nameof(settings.behaviors.defaultDatabase));
+ SerializedProperty databaseAppearancesField = settingsObject.FindProperty(nameof(settings.appearances)).FindPropertyRelative(nameof(settings.appearances.defaultDatabase));
+ SerializedProperty databaseActionsField = settingsObject.FindProperty(nameof(settings.actions)).FindPropertyRelative(nameof(settings.actions.defaultDatabase));
+ DrawDatabaseField(ref editAppearances, "Appearances/Disappearances", databaseAppearancesField, databaseAppearancesDrawer);
+ DrawDatabaseField(ref editBehaviors, "Behaviors", databaseBehaviorsField, databaseBehaviorsDrawer);
+ DrawDatabaseField(ref editActions, "Actions", databaseActionsField, databaseActionsDrawer);
+ }
+ }
+ else
+ {
+ DrawDatabaseField(ref editAppearances, "Appearances/Disappearances", databaseAppearancesField, databaseAppearancesDrawer);
+ DrawDatabaseField(ref editBehaviors, "Behaviors", databaseBehaviorsField, databaseBehaviorsDrawer);
+ DrawDatabaseField(ref editActions, "Actions", databaseActionsField, databaseActionsDrawer);
+ }
+
+ EditorGUI.indentLevel--;
+ }
+
+ #endregion
+
+ #region Main Settings
+ void DrawMainSettings()
+ {
+ EditorGUILayout.LabelField("Main Settings", EditorStyles.boldLabel);
+ EditorGUI.indentLevel++;
+ EditorGUILayout.PropertyField(typewriterStartsAutomatically);
+ if(typewriterStartsAutomatically.boolValue)
+ EditorGUILayout.LabelField("(Remember to add a Typewriter component!)", EditorStyles.wordWrappedMiniLabel);
+
+ EditorGUILayout.PropertyField(useDynamicScaling);
+ if(useDynamicScaling.boolValue)
+ {
+ EditorGUI.indentLevel++;
+ EditorGUILayout.PropertyField(referenceFontSize);
+ EditorGUI.indentLevel--;
+ }
+
+ EditorGUILayout.PropertyField(animationLoop);
+ if ((int)animationLoop.intValue != (int)AnimationLoop.Script)
+ {
+ EditorGUI.indentLevel++;
+ EditorGUILayout.PropertyField(timeScale);
+ EditorGUI.indentLevel--;
+ }
+
+ EditorGUILayout.PropertyField(isResettingTimeOnNewText);
+
+ EditorGUI.indentLevel--;
+ }
+ #endregion
+
+ public override void OnInspectorGUI()
+ {
+ GUI.enabled = false;
+ EditorGUILayout.PropertyField(m_Script);
+ GUI.enabled = true;
+ //--- Draws Text Animator ---
+
+ DrawPlayback();
+ EditorGUILayout.Space();
+
+ DrawMainSettings();
+ EditorGUILayout.Space();
+
+ DrawDefaultTags();
+ EditorGUILayout.Space();
+
+ DrawDatabases();
+ EditorGUILayout.Space();
+
+ //--- Draws the rest ---
+ //(in case of custom inspector from child classes etc.)
+ DrawPropertiesExcluding(serializedObject, excludedProperties);
+
+ if(serializedObject.hasModifiedProperties)
+ serializedObject.ApplyModifiedProperties();
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs.meta
new file mode 100644
index 0000000..d7b2280
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bcb43c683fc0e47569981a9ff0d346bc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs
new file mode 100644
index 0000000..54aacca
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs
@@ -0,0 +1,89 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI.Core.Editors
+{
+ [CustomEditor(typeof(TypewriterByCharacter), true)]
+ class TypewriterByCharacterDrawer : TypewriterCoreDrawer
+ {
+ SerializedProperty waitForNormalChars;
+ SerializedProperty waitLong;
+ SerializedProperty waitMiddle;
+ SerializedProperty avoidMultiplePunctuactionWait;
+ SerializedProperty waitForNewLines;
+ SerializedProperty waitForLastCharacter;
+
+ PropertyWithDifferentLabel useTypewriterWaitForDisappearances;
+ PropertyWithDifferentLabel disappearanceWaitTime;
+ PropertyWithDifferentLabel disappearanceSpeedMultiplier;
+
+ protected override void OnEnable()
+ {
+ base.OnEnable();
+
+ waitForNormalChars = serializedObject.FindProperty("waitForNormalChars");
+ waitLong = serializedObject.FindProperty("waitLong");
+ waitMiddle = serializedObject.FindProperty("waitMiddle");
+ avoidMultiplePunctuactionWait = serializedObject.FindProperty("avoidMultiplePunctuactionWait");
+ waitForNewLines = serializedObject.FindProperty("waitForNewLines");
+ waitForLastCharacter = serializedObject.FindProperty("waitForLastCharacter");
+ useTypewriterWaitForDisappearances = new PropertyWithDifferentLabel(serializedObject, "useTypewriterWaitForDisappearances", "Use Typewriter Wait Times");
+ disappearanceSpeedMultiplier = new PropertyWithDifferentLabel(serializedObject, "disappearanceSpeedMultiplier", "Typewriter Speed Multiplier");
+ disappearanceWaitTime = new PropertyWithDifferentLabel(serializedObject, "disappearanceWaitTime", "Disappearances Wait");
+ }
+
+ protected override string[] GetPropertiesToExclude()
+ {
+ string[] newProperties = new string[] {
+ "script",
+ "waitForNormalChars",
+ "waitLong",
+ "waitMiddle",
+ "avoidMultiplePunctuactionWait",
+ "waitForNewLines",
+ "waitForLastCharacter",
+ "useTypewriterWaitForDisappearances",
+ "disappearanceSpeedMultiplier",
+ "disappearanceWaitTime"
+ };
+
+ string[] baseProperties = base.GetPropertiesToExclude();
+
+ string[] mergedArray = new string[newProperties.Length + baseProperties.Length];
+
+ for (int i = 0; i < baseProperties.Length; i++)
+ {
+ mergedArray[i] = baseProperties[i];
+ }
+
+ for (int i = 0; i < newProperties.Length; i++)
+ {
+ mergedArray[i + baseProperties.Length] = newProperties[i];
+ }
+
+ return mergedArray;
+ }
+
+ protected override void OnTypewriterSectionGUI()
+ {
+ EditorGUILayout.PropertyField(waitForNormalChars);
+ EditorGUILayout.PropertyField(waitLong);
+ EditorGUILayout.PropertyField(waitMiddle);
+
+ EditorGUILayout.PropertyField(avoidMultiplePunctuactionWait);
+ EditorGUILayout.PropertyField(waitForNewLines);
+ EditorGUILayout.PropertyField(waitForLastCharacter);
+ }
+
+ protected override void OnDisappearanceSectionGUI()
+ {
+ useTypewriterWaitForDisappearances.PropertyField();
+
+ if (useTypewriterWaitForDisappearances.property.boolValue)
+ disappearanceSpeedMultiplier.PropertyField();
+ else
+ disappearanceWaitTime.PropertyField();
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs.meta
new file mode 100644
index 0000000..0049108
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 867d2cd807cf4028ad7222663d1d20dc
+timeCreated: 1679750297
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs
new file mode 100644
index 0000000..2ba50d6
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs
@@ -0,0 +1,59 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI.Core.Editors
+{
+ [CustomEditor(typeof(TypewriterByWord), true)]
+ class TypewriterByWordDrawer : TypewriterCoreDrawer
+ {
+ SerializedProperty waitForNormalWord;
+ SerializedProperty waitForWordWithPunctuation;
+ PropertyWithDifferentLabel disappearanceDelay;
+
+ protected override void OnEnable()
+ {
+ base.OnEnable();
+
+ waitForNormalWord = serializedObject.FindProperty("waitForNormalWord");
+ waitForWordWithPunctuation = serializedObject.FindProperty("waitForWordWithPunctuation");
+ disappearanceDelay = new PropertyWithDifferentLabel(serializedObject, "disappearanceDelay", "Disappearances Wait");
+ }
+
+ protected override string[] GetPropertiesToExclude()
+ {
+ string[] newProperties = new string[] {
+ "script",
+ "waitForNormalWord",
+ "waitForWordWithPunctuation",
+ "disappearanceDelay",
+ };
+
+ string[] baseProperties = base.GetPropertiesToExclude();
+
+ string[] mergedArray = new string[newProperties.Length + baseProperties.Length];
+
+ for (int i = 0; i < baseProperties.Length; i++)
+ {
+ mergedArray[i] = baseProperties[i];
+ }
+
+ for (int i = 0; i < newProperties.Length; i++)
+ {
+ mergedArray[i + baseProperties.Length] = newProperties[i];
+ }
+
+ return mergedArray;
+ }
+
+ protected override void OnTypewriterSectionGUI()
+ {
+ EditorGUILayout.PropertyField(waitForNormalWord);
+ EditorGUILayout.PropertyField(waitForWordWithPunctuation);
+ }
+
+ protected override void OnDisappearanceSectionGUI()
+ {
+ disappearanceDelay.PropertyField();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs.meta
new file mode 100644
index 0000000..b5dd0d5
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 89bf62aedbe94754920fc2335a4fc7d0
+timeCreated: 1688982269
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs
new file mode 100644
index 0000000..727afb5
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs
@@ -0,0 +1,253 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI.Core.Editors
+{
+ [CustomEditor(typeof(TypewriterCore), true)]
+ class TypewriterCoreDrawer : Editor
+ {
+ SerializedProperty showLettersDinamically;
+ SerializedProperty startTypewriterMode;
+ SerializedProperty hideAppearancesOnSkip;
+ SerializedProperty triggerEventsOnSkip;
+ SerializedProperty disappearanceOrientation;
+
+ SerializedProperty onTextShowed;
+ SerializedProperty onTypewriterStart;
+ SerializedProperty onCharacterVisible;
+ SerializedProperty onTextDisappeared;
+ SerializedProperty onMessage;
+
+ SerializedProperty resetTypingSpeedAtStartup;
+
+ string[] propertiesToExclude = new string[0];
+
+
+ protected struct PropertyWithDifferentLabel
+ {
+ public SerializedProperty property;
+ public GUIContent label;
+
+ public PropertyWithDifferentLabel(SerializedObject obj, string property, string label)
+ {
+ this.property = obj.FindProperty(property);
+ this.label = new GUIContent(label);
+ }
+
+ public void PropertyField()
+ {
+ EditorGUILayout.PropertyField(property, label);
+ }
+ }
+
+
+ protected virtual string[] GetPropertiesToExclude()
+ {
+ return new string[] {
+ "m_Script",
+ "useTypeWriter",
+ "startTypewriterMode",
+ "hideAppearancesOnSkip",
+ "triggerEventsOnSkip",
+ "onTextShowed",
+ "onTypewriterStart",
+ "onCharacterVisible",
+ "resetTypingSpeedAtStartup",
+ "onTextDisappeared",
+ "disappearanceOrientation",
+ "onMessage",
+ };
+ }
+
+ protected virtual void OnEnable()
+ {
+ showLettersDinamically = serializedObject.FindProperty("useTypeWriter");
+ startTypewriterMode = serializedObject.FindProperty("startTypewriterMode");
+ hideAppearancesOnSkip = serializedObject.FindProperty("hideAppearancesOnSkip");
+ triggerEventsOnSkip = serializedObject.FindProperty("triggerEventsOnSkip");
+ disappearanceOrientation = serializedObject.FindProperty("disappearanceOrientation");
+
+
+ onTextShowed = serializedObject.FindProperty("onTextShowed");
+ onTypewriterStart = serializedObject.FindProperty("onTypewriterStart");
+ onCharacterVisible = serializedObject.FindProperty("onCharacterVisible");
+ onTextDisappeared = serializedObject.FindProperty("onTextDisappeared");
+ onMessage = serializedObject.FindProperty("onMessage");
+
+ resetTypingSpeedAtStartup = serializedObject.FindProperty("resetTypingSpeedAtStartup");
+
+ propertiesToExclude = GetPropertiesToExclude();
+ }
+
+ bool ButtonPlaymode(string label)
+ {
+ bool prevGUI = GUI.enabled;
+ GUI.enabled = Application.isPlaying;
+
+ bool value = GUILayout.Button(label, EditorStyles.miniButton, GUILayout.MaxWidth(70));
+
+ GUI.enabled = prevGUI;
+ return value;
+ }
+
+ public override void OnInspectorGUI()
+ {
+
+ {
+ EditorGUILayout.LabelField("Main Settings", EditorStyles.boldLabel);
+
+ EditorGUI.indentLevel++;
+ EditorGUILayout.PropertyField(showLettersDinamically);
+
+ EditorGUI.indentLevel--;
+ }
+
+ EditorGUILayout.Space();
+
+ //Typewriter settings
+
+ {
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.LabelField("Typewriter", EditorStyles.boldLabel);
+
+ if (showLettersDinamically.boolValue)
+ {
+ if (ButtonPlaymode("Start"))
+ {
+ ((TypewriterCore)target).StartShowingText(true);
+ }
+ if (ButtonPlaymode("Stop"))
+ {
+ ((TypewriterCore)target).StopShowingText();
+ }
+ }
+
+ EditorGUILayout.EndHorizontal();
+ }
+
+ if (showLettersDinamically.boolValue)
+ {
+ EditorGUI.indentLevel++;
+
+ EditorGUILayout.PropertyField(startTypewriterMode);
+
+ EditorGUILayout.PropertyField(resetTypingSpeedAtStartup);
+
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.LabelField("Typewriter Skip", EditorStyles.boldLabel);
+
+
+ if (ButtonPlaymode("Skip"))
+ {
+ ((TypewriterCore)target).SkipTypewriter();
+ }
+ EditorGUILayout.EndHorizontal();
+
+
+ EditorGUILayout.PropertyField(hideAppearancesOnSkip);
+ EditorGUILayout.PropertyField(triggerEventsOnSkip);
+
+ EditorGUI.indentLevel--;
+
+ }
+ else
+ {
+ GUI.enabled = false;
+ EditorGUILayout.LabelField("The typewriter is disabled");
+ GUI.enabled = true;
+ }
+
+ EditorGUILayout.Space();
+
+ //Events
+ {
+ EditorGUILayout.LabelField("Events", EditorStyles.boldLabel);
+
+ // foldoutEvents = EditorGUILayout.Foldout(foldoutEvents, "Events");
+
+ //if (foldoutEvents)
+ {
+ EditorGUILayout.PropertyField(onTextShowed);
+ EditorGUILayout.PropertyField(onTextDisappeared);
+
+ //GUI.enabled = showLettersDinamically.boolValue;
+
+ if (showLettersDinamically.boolValue)
+ {
+
+ EditorGUI.indentLevel++;
+ EditorGUILayout.PropertyField(onTypewriterStart);
+ EditorGUILayout.PropertyField(onCharacterVisible);
+ EditorGUILayout.PropertyField(onMessage);
+
+ EditorGUI.indentLevel--;
+ }
+
+ //GUI.enabled = true;
+ }
+
+ }
+
+ EditorGUILayout.Space();
+
+ //Typewriter
+ {
+ EditorGUILayout.LabelField("Typewriter Wait", EditorStyles.boldLabel);
+
+ EditorGUI.indentLevel++;
+ OnTypewriterSectionGUI();
+ EditorGUI.indentLevel--;
+ }
+
+ EditorGUILayout.Space();
+
+ //Disappearance
+ {
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.LabelField("Disappearances", EditorStyles.boldLabel);
+
+ if (ButtonPlaymode("Start"))
+ {
+ ((TypewriterCore)target).StartDisappearingText();
+ }
+ if (ButtonPlaymode("Stop"))
+ {
+ ((TypewriterCore)target).StopDisappearingText();
+ }
+
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUI.indentLevel++;
+ GUI.enabled = false;
+ EditorGUILayout.LabelField("To start disappearances, please call the 'StartDisappearingText()' method. See the docs for more.", EditorStyles.wordWrappedMiniLabel);
+ GUI.enabled = true;
+
+ EditorGUILayout.PropertyField(disappearanceOrientation);
+
+ OnDisappearanceSectionGUI();
+
+ EditorGUI.indentLevel--;
+ }
+
+ //Draws parent without the children (so, TanimPlayerBase can have a custom inspector)
+ DrawPropertiesExcluding(serializedObject, propertiesToExclude);
+
+
+ if (serializedObject.hasModifiedProperties)
+ {
+ serializedObject.ApplyModifiedProperties();
+ }
+
+ }
+
+ protected virtual void OnTypewriterSectionGUI()
+ {
+
+ }
+
+ protected virtual void OnDisappearanceSectionGUI()
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs.meta
new file mode 100644
index 0000000..259f154
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c505a7fbdbbf6604f9f76bf0afbec264
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties.meta
new file mode 100644
index 0000000..924f85d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 2072e32578cb41c696fbc87874010a2b
+timeCreated: 1680343888
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs
new file mode 100644
index 0000000..9d72008
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs
@@ -0,0 +1,51 @@
+using Febucci.UI.Effects;
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI.Core
+{
+ [CustomPropertyDrawer(typeof(ColorCurveProperty))]
+ public class ColorCurvePropertyDrawer : PropertyDrawer
+ {
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ SerializedProperty enabled = property.FindPropertyRelative(nameof(ColorCurve.enabled));
+ Rect lineByLine = position;
+ lineByLine.height = EditorGUIUtility.singleLineHeight;
+
+ Rect enabledRect = new Rect(lineByLine.xMax-EditorGUIUtility.singleLineHeight, lineByLine.y, EditorGUIUtility.singleLineHeight, lineByLine.height);
+ Rect expandedRect = new Rect(lineByLine.x, lineByLine.y, position.width-EditorGUIUtility.singleLineHeight, lineByLine.height);
+ enabled.boolValue = GUI.Toggle(enabledRect, enabled.boolValue, GUIContent.none);
+ GUI.color = enabled.boolValue ? Color.white : Color.gray;
+
+ property.isExpanded = EditorGUI.Foldout(expandedRect, property.isExpanded, label, true);
+ GUI.color = Color.white;
+ if(!property.isExpanded) return;
+ GUI.enabled = enabled.boolValue;
+
+ // -- inner area smaller ---
+ position.y = lineByLine.yMax;
+ position.height -= lineByLine.height;
+ position.x += 15;
+ position.width-=15;
+
+ lineByLine.x = position.x;
+ lineByLine.width = position.width;
+ lineByLine.y += lineByLine.height;
+
+ EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(ColorCurve.colorOverTime)));
+ lineByLine.y += lineByLine.height;
+ EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(ColorCurve.duration)));
+ lineByLine.y += lineByLine.height;
+ EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(ColorCurve.waveSize)));
+ GUI.enabled = true;
+ }
+
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
+ {
+ return (property.isExpanded)
+ ? EditorGUIUtility.singleLineHeight * 4
+ : EditorGUIUtility.singleLineHeight;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs.meta
new file mode 100644
index 0000000..5c71ff3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 66208123db9e4e77b655117ebcc45e29
+timeCreated: 1680346774
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs
new file mode 100644
index 0000000..7e32fb5
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs
@@ -0,0 +1,49 @@
+using Febucci.UI.Effects;
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI.Core
+{
+ [CustomPropertyDrawer(typeof(EmissionCurveProperty))]
+ public class EmissionCurvePropertyDrawer : PropertyDrawer
+ {
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ Rect lineByLine = position;
+ lineByLine.height = EditorGUIUtility.singleLineHeight;
+ property.isExpanded = EditorGUI.Foldout(lineByLine, property.isExpanded, label, true);
+ if(!property.isExpanded) return;
+
+ // -- inner area smaller ---
+ position.y = lineByLine.yMax;
+ position.height -= lineByLine.height;
+ position.x += 15;
+ position.width-=15;
+
+ lineByLine.x = position.x;
+ lineByLine.width = position.width;
+ lineByLine.y += lineByLine.height;
+
+ // -- cycles --
+ SerializedProperty cycles = property.FindPropertyRelative(nameof(EmissionCurve.cycles));
+ Rect half = lineByLine;
+ half.width /= 2f;
+ EditorGUI.PropertyField(half, cycles);
+ half.x += half.width + 5;
+ half.width -= 5;
+ EditorGUI.LabelField(half,cycles.intValue > 0 ? "cycles until end" : "effect is infinite");
+
+ lineByLine.y += lineByLine.height;
+ EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(EmissionCurve.duration)));
+ lineByLine.y += lineByLine.height;
+ EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(EmissionCurve.weightOverTime)));
+ }
+
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
+ {
+ return property.isExpanded
+ ? EditorGUIUtility.singleLineHeight*4
+ : EditorGUIUtility.singleLineHeight;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs.meta
new file mode 100644
index 0000000..6b2ec5c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 4d090238fa054eed8276f4ad839ea8d0
+timeCreated: 1680343908
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs
new file mode 100644
index 0000000..12fd08f
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs
@@ -0,0 +1,51 @@
+using Febucci.UI.Effects;
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI.Core
+{
+ [CustomPropertyDrawer(typeof(FloatCurveProperty))]
+ public class FloatCurvePropertyDrawer : PropertyDrawer
+ {
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ SerializedProperty enabled = property.FindPropertyRelative(nameof(FloatCurve.enabled));
+ Rect lineByLine = position;
+ lineByLine.height = EditorGUIUtility.singleLineHeight;
+
+ Rect enabledRect = new Rect(lineByLine.xMax-EditorGUIUtility.singleLineHeight, lineByLine.y, EditorGUIUtility.singleLineHeight, lineByLine.height);
+ Rect expandedRect = new Rect(lineByLine.x, lineByLine.y, position.width-EditorGUIUtility.singleLineHeight, lineByLine.height);
+ enabled.boolValue = GUI.Toggle(enabledRect, enabled.boolValue, GUIContent.none);
+ GUI.color = enabled.boolValue ? Color.white : Color.gray;
+
+ property.isExpanded = EditorGUI.Foldout(expandedRect, property.isExpanded, label, true);
+ GUI.color = Color.white;
+ if(!property.isExpanded) return;
+ GUI.enabled = enabled.boolValue;
+
+ // -- inner area smaller ---
+ position.y = lineByLine.yMax;
+ position.height -= lineByLine.height;
+ position.x += 15;
+ position.width-=15;
+
+ lineByLine.x = position.x;
+ lineByLine.width = position.width;
+ lineByLine.y += lineByLine.height;
+
+ EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(FloatCurve.amplitude)));
+ lineByLine.y += lineByLine.height;
+ EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(FloatCurve.waveSize)));
+ lineByLine.y += lineByLine.height;
+ EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(FloatCurve.weightOverTime)));
+ GUI.enabled = true;
+ }
+
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
+ {
+ return (property.isExpanded)
+ ? EditorGUIUtility.singleLineHeight * 4
+ : EditorGUIUtility.singleLineHeight;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs.meta
new file mode 100644
index 0000000..537c83e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 4894f9d8534334cd7a2f30c70b7bf59f
+timeCreated: 1680343908
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables.meta
new file mode 100644
index 0000000..4f2fa4a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 92e50da885b094e4fb85655841952277
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions.meta
new file mode 100644
index 0000000..47f126a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8c2f725852edc492b8576fab496a36bb
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs
new file mode 100644
index 0000000..46ce4fa
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs
@@ -0,0 +1,15 @@
+using Febucci.UI.Actions;
+using UnityEditor;
+
+namespace Febucci.UI.Core
+{
+ [CustomEditor(typeof(ActionScriptableBase), true)]
+ class ActionScriptableDrawer : Editor
+ {
+ GenericSharedDrawer drawer = new GenericSharedDrawer(true);
+ public override void OnInspectorGUI()
+ {
+ drawer.OnInspectorGUI(serializedObject);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs.meta
new file mode 100644
index 0000000..1da562b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2200ec37f7bdf40a2aebe58049fd175f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations.meta
new file mode 100644
index 0000000..dd12f4b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b590f529b1e874522b94d7c65ad0dc13
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs
new file mode 100644
index 0000000..153e6af
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs
@@ -0,0 +1,15 @@
+using Febucci.UI.Effects;
+using UnityEditor;
+
+namespace Febucci.UI.Core
+{
+ [CustomEditor(typeof(AnimationScriptableBase), true)]
+ class AnimScriptableDrawer : Editor
+ {
+ GenericSharedDrawer drawer = new GenericSharedDrawer(true);
+ public override void OnInspectorGUI()
+ {
+ drawer.OnInspectorGUI(serializedObject);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs.meta
new file mode 100644
index 0000000..452e793
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 475624099e3c24c10a455adc583e9044
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database.meta
new file mode 100644
index 0000000..42bc15b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 322f146cc940c4028b1d7a11a84d2e89
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs
new file mode 100644
index 0000000..4892cf8
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs
@@ -0,0 +1,17 @@
+using Febucci.UI.Actions;
+using Febucci.UI.Core.Parsing;
+using UnityEditor;
+
+namespace Febucci.UI.Core
+{
+ [CustomEditor(typeof(ActionDatabase), true)]
+ class ActionDatabaseScriptableDrawer : Editor
+ {
+ DatabaseSharedDrawer drawer = new DatabaseSharedDrawer();
+
+ public override void OnInspectorGUI()
+ {
+ drawer.OnInspectorGUI(serializedObject);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs.meta
new file mode 100644
index 0000000..99b77bc
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cef03566441d243eca1e263c1a8d95ae
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs
new file mode 100644
index 0000000..880f8d9
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs
@@ -0,0 +1,16 @@
+using Febucci.UI.Effects;
+using UnityEditor;
+
+namespace Febucci.UI.Core
+{
+ [CustomEditor(typeof(AnimationsDatabase), true)]
+ class AnimDatabaseScriptableDrawer : Editor
+ {
+ DatabaseSharedDrawer drawer = new DatabaseSharedDrawer();
+
+ public override void OnInspectorGUI()
+ {
+ drawer.OnInspectorGUI(serializedObject);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs.meta
new file mode 100644
index 0000000..6f43652
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4d5e9601a30fe4cd8a211bde9711dd42
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs
new file mode 100644
index 0000000..06e9c26
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs
@@ -0,0 +1,104 @@
+using Febucci.UI.Effects;
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI.Core
+{
+ [System.Serializable]
+ class AnimationElementDrawer
+ {
+ public SerializedProperty propertyScriptable;
+ GenericSharedDrawer drawer;
+ private GUIContent scriptableNameContent;
+ public bool expanded;
+ public bool somethingChanged;
+ public int wantsToDelete;
+
+ public AnimationElementDrawer(SerializedProperty propertyArrayElementPair)
+ {
+ propertyScriptable = propertyArrayElementPair;
+ drawer = new GenericSharedDrawer(false);
+ expanded = false;
+ wantsToDelete = 0;
+ scriptableNameContent = new GUIContent("Scriptable");
+ }
+
+ public bool hasScriptable => propertyScriptable.objectReferenceValue != null;
+
+ public void Draw()
+ {
+ somethingChanged = false;
+ bool drawWarning = false;
+ string foldoutName;
+ if (propertyScriptable.objectReferenceValue is ITagProvider tag)
+ {
+ if (string.IsNullOrEmpty(tag.TagID))
+ {
+ drawWarning = true;
+ foldoutName = "[!] Empty Tag";
+ }
+ else
+ {
+ foldoutName = tag.TagID;
+ }
+ }
+ else
+ {
+ drawWarning = true;
+ foldoutName = "[!] Empty Slot";
+ }
+
+ EditorGUILayout.BeginHorizontal();
+ expanded = EditorGUILayout.Foldout(expanded, foldoutName, true);
+ GUI.backgroundColor = wantsToDelete == 1 ? Color.red : Color.white;
+ GUI.enabled = expanded;
+ if (GUILayout.Button(wantsToDelete == 1 ? "Confirm?" : "Delete", EditorStyles.helpBox, GUILayout.Width(55)))
+ {
+ wantsToDelete++;
+ }
+ GUI.enabled = true;
+ if (!expanded)
+ wantsToDelete = 0;
+
+ GUI.backgroundColor = Color.white;
+
+ if(drawWarning)
+ EditorGUILayout.HelpBox("Invalid", MessageType.Warning);
+ EditorGUILayout.EndHorizontal();
+
+ if (expanded)
+ {
+ EditorGUI.indentLevel++;
+ DrawInfo();
+ DrawBody();
+ EditorGUI.indentLevel--;
+ }
+ }
+
+
+ void DrawInfo()
+ {
+ EditorGUILayout.BeginHorizontal();
+ EditorGUI.BeginChangeCheck();
+ EditorGUILayout.PropertyField(propertyScriptable, scriptableNameContent);
+ if (EditorGUI.EndChangeCheck())
+ {
+ //refreshes drawer
+ somethingChanged = true;
+ drawer = new GenericSharedDrawer(false);
+
+ if (propertyScriptable.serializedObject.hasModifiedProperties)
+ propertyScriptable.serializedObject.ApplyModifiedProperties();
+
+ expanded = true;
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+
+ void DrawBody()
+ {
+ drawer.OnInspectorGUI(propertyScriptable);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs.meta
new file mode 100644
index 0000000..a33c496
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 44ca8d8eac0743e88fa01e22338f71f7
+timeCreated: 1674559685
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs
new file mode 100644
index 0000000..7bff073
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs
@@ -0,0 +1,73 @@
+using UnityEngine;
+using UnityEditor;
+
+namespace Febucci.UI.Core
+{
+ //handles drawing of each single effect
+ //with possibility to expand and directly draw the scriptable object as well
+ [System.Serializable]
+ class DatabaseSharedDrawer : SharedDrawer
+ {
+ SerializedProperty pairsProperty;
+ [SerializeField] AnimationElementDrawer[] elements;
+
+ protected override void OnEnabled(SerializedObject baseObject)
+ {
+ base.OnEnabled(baseObject);
+ pairsProperty = baseObject.FindProperty("data");
+ MatchEffectsWithArray();
+ }
+
+ void MatchEffectsWithArray()
+ {
+ if (elements == null || elements.Length != pairsProperty.arraySize)
+ {
+ elements = new AnimationElementDrawer[pairsProperty.arraySize];
+ for (int i = 0; i < elements.Length; i++)
+ {
+ elements[i] = new AnimationElementDrawer(pairsProperty.GetArrayElementAtIndex(i));
+ }
+ }
+ }
+
+ protected override void _OnInspectorGUI()
+ {
+ MatchEffectsWithArray(); //putting this one here since might change after Undo
+
+ for (var i = 0; i < elements.Length; i++)
+ {
+ var effect = elements[i];
+ effect.Draw();
+ if (effect.wantsToDelete >= 2)
+ {
+ pairsProperty.DeleteArrayElementAtIndex(i);
+ MatchEffectsWithArray();
+ ApplyChanges();
+ return;
+ }
+
+ if (effect.somethingChanged)
+ {
+ ApplyChanges();
+ effect.somethingChanged = false;
+ }
+ }
+
+ //Adds new effect if there isn't any available slot already //TODO check every position
+ if (elements.Length == 0 || elements[elements.Length - 1].hasScriptable)
+ {
+ if(EditorGUILayout.Foldout(false, "->[Add new effect]", true))
+ {
+ pairsProperty.InsertArrayElementAtIndex(pairsProperty.arraySize);
+ MatchEffectsWithArray();
+ //Sets last element as empty
+ elements[elements.Length - 1].propertyScriptable.objectReferenceValue = null;
+ ApplyChanges();
+ elements[elements.Length - 1].expanded = true;
+ return;
+ }
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs.meta
new file mode 100644
index 0000000..14db8f9
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c02119de7d2e84ba9ad22ff6b6c23dfa
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings.meta
new file mode 100644
index 0000000..8c8d93e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 18ea5fac169d489ebc9f01ebedbd65be
+timeCreated: 1677691490
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs
new file mode 100644
index 0000000..97c8978
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs
@@ -0,0 +1,10 @@
+using UnityEngine;
+
+namespace Febucci.UI
+{
+ [System.Serializable]
+ internal class TextAnimatorInstallationData : ScriptableObject
+ {
+ [SerializeField] internal string latestVersion = "None"; //stores the latest version
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs.meta
new file mode 100644
index 0000000..147a6fc
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 9e2a5ebb2c224910b14d053825d88b4a
+timeCreated: 1678369185
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs
new file mode 100644
index 0000000..60f8e98
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs
@@ -0,0 +1,52 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI
+{
+ [CustomEditor(typeof(TextAnimatorInstallationData))]
+ internal class TextAnimatorInstallationDataDrawer : Editor
+ {
+ TextAnimatorInstallationData script;
+
+ void OnEnable()
+ {
+ script = (TextAnimatorInstallationData)target;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ EditorGUILayout.HelpBox("This file is used by Text Animator to locate your installation path, so that you can move the folder anywhere you want, rename it and better organize your effects. Enjoy!", MessageType.None);
+ EditorGUILayout.Space();
+
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.PrefixLabel("Installed version:");
+ EditorGUILayout.LabelField(script.latestVersion);
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.Space();
+ if (TextAnimatorSettings.Instance)
+ {
+ EditorGUILayout.HelpBox("If you wanted to edit the default settings instead, you can select the file via the button below.", MessageType.None);
+ if (GUILayout.Button("Select Settings"))
+ {
+ Selection.activeObject = TextAnimatorSettings.Instance;
+ }
+ }
+ else
+ {
+ EditorGUILayout.HelpBox("It seems you don't have a settings file, which is necessary for Text Animator. Do you want to fix it now?", MessageType.Warning);
+ if (GUILayout.Button("Fix it for me"))
+ {
+ TextAnimatorSetupWindow.FixSettingsFileNotFound();
+ Selection.activeObject = TextAnimatorSettings.Instance;
+ }
+ }
+
+ EditorGUILayout.Space();
+ if (GUILayout.Button("Open About Window"))
+ {
+ TextAnimatorSetupWindow.Menu_ShowWindowAlways();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs.meta
new file mode 100644
index 0000000..0647367
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 88089012e3cf74143abc644150aba565
+timeCreated: 1678369185
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs
new file mode 100644
index 0000000..4db1bad
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs
@@ -0,0 +1,30 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI
+{
+ [CustomEditor(typeof(TextAnimatorSettings))]
+ public class TextAnimatorSettingsDrawer : Editor
+ {
+ bool extraSettings = false;
+
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+
+ EditorGUILayout.Space();
+ extraSettings = EditorGUILayout.Foldout(extraSettings, "Extra Settings", EditorStyles.foldoutHeader);
+ if (extraSettings)
+ {
+ if (GUILayout.Button("Reset Default Effects and Actions"))
+ {
+ if (EditorUtility.DisplayDialog("Text Animator",
+ "Are you sure you want to reset the default effects and actions?", "Yes", "No"))
+ {
+ TextAnimatorSetupWindow.ResetToBuiltIn();
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs.meta
new file mode 100644
index 0000000..b03ae60
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 67c87275cac3743da833880fb7431757
+timeCreated: 1677691499
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs
new file mode 100644
index 0000000..810862c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs
@@ -0,0 +1,486 @@
+using System;
+using Febucci.UI.Core;
+using UnityEditor;
+using UnityEngine;
+using System.Linq;
+using Febucci.UI.Actions;
+using Febucci.UI.Effects;
+
+namespace Febucci.UI
+{
+ public class TextAnimatorSetupWindow : EditorWindow
+ {
+ const string currentVersion = "2.0.2";
+ const string path_defaultInstallation = "Assets/Plugins/Febucci/Text Animator";
+
+ TextAnimatorInstallationData installationData;
+ bool settingsFileFound;
+
+
+ ///
+ /// Called whenever the editor is loaded,
+ /// e.g. useful for checking if the asset is imported
+ /// for the first time or after an update
+ ///
+ [InitializeOnLoadMethod]
+ internal static void TryShowingWindowOnLoad()
+ {
+ EditorApplication.delayCall += () => ShowWindow(true);;
+ }
+
+ #region Menu Items
+
+ const string menuParent = "Tools/Febucci/TextAnimator/";
+
+ [MenuItem(menuParent + "About Window", priority = 1)]
+ internal static void Menu_ShowWindowAlways() => ShowWindow(false);
+
+ [MenuItem(menuParent + "Utils/Select Settings SO", priority = 11)]
+ static void Menu_SelectSettingsScriptable()
+ {
+ if (TextAnimatorSettings.Instance)
+ {
+ Selection.activeObject = TextAnimatorSettings.Instance;
+ }
+ else
+ {
+ if (EditorUtility.DisplayDialog("Settings not found",
+ "Text Animator's settings file has not been found. Do you want to run the setup and create it automatically?",
+ "Yes", "No"))
+ {
+ FixSettingsFileNotFound();
+ Selection.activeObject = TextAnimatorSettings.Instance;
+ }
+ }
+ }
+
+
+ #endregion
+
+ #region Window
+
+ static void ShowWindow(bool onlyOnUpdate)
+ {
+ // already installed
+ if (IsTextAnimatorInstalled(out var installationGUID))
+ {
+ string installationPath = AssetDatabase.GUIDToAssetPath(installationGUID);
+ var installationData = AssetDatabase.LoadAssetAtPath(installationPath);
+
+ // same version installed, no need to show the window
+ if (onlyOnUpdate && installationData.latestVersion == currentVersion)
+ {
+ return;
+ }
+
+ //--- Updates to new version ---
+ UpdateProject(installationData);
+ }
+ else
+ {
+ //--- First time import ---
+ //Does nothing, asking the user to install with one click
+ }
+
+ //Initializes the asset for the first time
+ var window = (TextAnimatorSetupWindow)GetWindow(typeof(TextAnimatorSetupWindow), true,
+ "Text Animator Setup", true);
+ window.maxSize = new Vector2(351, 485);
+ window.minSize = window.maxSize;
+ window.settingsFileFound = TextAnimatorSettings.Instance;
+ }
+
+ bool triedInstallingOnce;
+ void OnGUI()
+ {
+ if (!installationData)
+ {
+ if (!triedInstallingOnce)
+ {
+ EditorGUILayout.LabelField("Installing....");
+ triedInstallingOnce = true;
+ installationData = GetOrCreateInstallationData();
+ Repaint();
+ }
+ else
+ {
+ EditorGUILayout.LabelField("Unable to install package, please try to reopen this window from the Tools->Febucci menu");
+ return;
+ }
+ }
+
+ //--- HEADER ---
+ GUILayout.Box(TexturesLoader.AboutLogo, EditorStyles.wordWrappedLabel);
+ EditorGUILayout.Space();
+
+ EditorGUILayout.LabelField("Welcome!", EditorStyles.boldLabel);
+ EditorGUILayout.LabelField("Thank you for using Text Animator. Have fun bringing your projects to life!",
+ EditorStyles.wordWrappedLabel);
+
+ EditorGUILayout.Space();
+
+ //--- VERSION STATUS ---
+
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.PrefixLabel("Version:", EditorStyles.boldLabel);
+ EditorGUILayout.LabelField(installationData.latestVersion, EditorStyles.whiteMiniLabel);
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.Space();
+
+ if (!settingsFileFound)
+ {
+ FixSettingsFileNotFound();
+ settingsFileFound = true;
+ }
+
+ // --- LINKS etc. ---
+ EditorGUILayout.LabelField("Online Resources", EditorStyles.boldLabel);
+ EditorGUILayout.LabelField("Here are some useful resources.", EditorStyles.label);
+
+ EditorGUILayout.BeginHorizontal();
+ const string baseUrl = "https://febucci.com/text-animator-unity/";
+ if (GUILayout.Button("What's New"))
+ {
+ Application.OpenURL($"{baseUrl}changelog/");
+ }
+
+ if (GUILayout.Button("Documentation"))
+ {
+ Application.OpenURL($"{baseUrl}docs/");
+ }
+
+ if (GUILayout.Button("Support"))
+ {
+ Application.OpenURL($"{baseUrl}support/");
+ }
+
+ EditorGUILayout.EndHorizontal();
+
+
+ //--Extras--
+ EditorGUILayout.LabelField("Extras", EditorStyles.boldLabel);
+
+ EditorGUILayout.LabelField("Would you like to be included in a future Text Animator showcase?",
+ EditorStyles.wordWrappedMiniLabel);
+ if (GUILayout.Button("-> Submit your game/project"))
+ Application.OpenURL("https://www.febucci.com/text-animator-unity/showcase/");
+
+ EditorGUILayout.Space(1);
+ EditorGUILayout.LabelField("Please consider writing a review for the asset. It takes one minute but it really helps. Thanks!",
+ EditorStyles.wordWrappedMiniLabel);
+ if (GUILayout.Button("♥ Review on the Asset Store"))
+ Application.OpenURL("https://assetstore.unity.com/packages/slug/158707");
+
+
+ GUILayout.Space(5);
+ EditorGUILayout.LabelField("Cheers! @febucci", EditorStyles.centeredGreyMiniLabel);
+ }
+
+ #endregion
+
+ #region Installation
+
+ static TextAnimatorInstallationData GetOrCreateInstallationData()
+ {
+ if (IsTextAnimatorInstalled(out var installationGuid))
+ {
+ return AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(installationGuid));
+ }
+
+ var data = _CreateScriptableAssetAtPath(path_defaultInstallation + "/Data",
+ "InstallationData");
+ data.latestVersion = currentVersion;
+ EditorUtility.SetDirty(data);
+ AssetDatabase.SaveAssets();
+
+ return data;
+ }
+
+ static bool IsTextAnimatorInstalled(out string installationGUID)
+ {
+ string[] path = AssetDatabase.FindAssets($"t:{nameof(TextAnimatorInstallationData)}");
+ installationGUID = path.Length > 0 ? path[0] : string.Empty;
+ return path.Length > 0;
+ }
+
+ static bool TryGetInstallationFolder(out string result)
+ {
+ if (!IsTextAnimatorInstalled(out var installationGUID))
+ {
+ Debug.LogError("Unable to locate Text Animator's Installation file. Please re-run the setup.");
+ result = null;
+ return false;
+ }
+
+ result = AssetDatabase.GUIDToAssetPath(installationGUID);
+ result = result.Substring(0, result.LastIndexOf('/'));
+ return true;
+ }
+
+ #endregion
+
+ ///
+ /// Creates built-in effects databases and assigns it to the settings file as default.
+ ///
+ ///
+ /// In case the settings file doesn't exist, it'll be created as well.
+ /// In case the built-in effects or databases already exist, they'll be overwritten.
+ ///
+ public static void ResetToBuiltIn()
+ {
+ //makes sure the asset is installed
+ GetOrCreateInstallationData();
+ if (!TryGetInstallationFolder(out string installationFolder))
+ {
+ Debug.LogError("Something went wrong in locating TextAnimator's installation data.");
+ return;
+ }
+
+ var settings = GetOrCreateSettings(installationFolder);
+ CreateDefaultDatabases(installationFolder,
+ out var beh,
+ out var app,
+ out var act);
+ AssignDatabasesToSettings(settings, beh, app, act);
+ }
+
+ #region Databases and Tags
+
+ ///
+ /// Creates default effects and actions databases.
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// In case they already exist, they'll get overwritten.
+ static void CreateDefaultDatabases(string installationFolder, out AnimationsDatabase behaviors, out AnimationsDatabase appearances, out ActionDatabase actions)
+ {
+ string progressTitle = "Text Animator";
+
+ // --- DATABASES ---
+ EditorUtility.DisplayProgressBar(progressTitle, "Creating Behaviors Database", 1/4f);
+ behaviors = _CreateDatabase(installationFolder, "Behaviors", "Behaviors Database", EffectCategory.Behaviors);
+
+ EditorUtility.DisplayProgressBar(progressTitle, "Creating Appearances Database", 2/4f);
+ appearances = _CreateDatabase(installationFolder, "Appearances", "Appearances Database", EffectCategory.Appearances);
+
+ EditorUtility.DisplayProgressBar(progressTitle, "Creating Actions Database", 3/4f);
+ actions = _CreateDatabase(installationFolder, "Actions", "Actions Database", EffectCategory.None);
+
+ AssetDatabase.SaveAssets();
+ EditorUtility.ClearProgressBar();
+ }
+
+ public static DatabaseType _CreateDatabase(string installationFolder, string folderName, string fileName, EffectCategory category)
+ where DatabaseType : Database where ElementType : ScriptableObject, ITagProvider
+ {
+ string databasePath = installationFolder + $"/{folderName}";
+
+ var database = _CreateScriptableAssetAtPath(databasePath, fileName);
+ var types = GetScriptableElementsFromAssembly();
+ for (var i = 0; i < types.Length; i++)
+ {
+ if (TryCreatingDefaultTagScriptable(types[i], category, out var so))
+ {
+ PlaceScriptableAtPath(so, databasePath);
+ database.Add(so as ElementType);
+ }
+ }
+ EditorUtility.SetDirty(database);
+ SerializedObject dat = new SerializedObject(database);
+ dat.ApplyModifiedProperties();
+ return database;
+ }
+
+ static bool TryCreatingDefaultTagScriptable(System.Type type, EffectCategory category, out ScriptableObject result)
+ {
+ var attribute = type.GetCustomAttributes(typeof(TagInfoAttribute), true).FirstOrDefault() as TagInfoAttribute;
+ if (attribute == null)
+ {
+ //skips default elements that do not have EffectInfo attribute
+ result = default;
+ return false;
+ }
+
+ //skips empty tags by design, e.g. Composite animation
+ if (string.IsNullOrEmpty(attribute.tagID))
+ {
+ result = default;
+ return false;
+ }
+
+ if (attribute is EffectInfoAttribute effectInfo)
+ {
+ if (!effectInfo.category.HasFlag(category))
+ {
+ result = default;
+ return false;
+ }
+ }
+
+ var so = CreateInstance(type);
+ so.name = type.Name;
+
+ //changes scriptable field based on default value attributes
+ var defaultValueAttributes =
+ type.GetCustomAttributes(typeof(DefaultValueAttribute), true) as DefaultValueAttribute[];
+
+ SerializedObject serializedSo = new SerializedObject(so);
+ var tagID = serializedSo.FindProperty("tagID");
+
+ if (defaultValueAttributes != null)
+ {
+ foreach (var info in defaultValueAttributes)
+ {
+ serializedSo.FindProperty(info.variableName).floatValue = info.variableValue;
+ }
+ }
+
+ tagID.stringValue = attribute.tagID;
+ serializedSo.ApplyModifiedProperties();
+ result = so;
+ return true;
+ }
+
+
+ #endregion
+
+
+ #region Settings
+
+ static void AssignDatabasesToSettings(TextAnimatorSettings settings, AnimationsDatabase behaviorsDatabase,
+ AnimationsDatabase appearanceDatabase, ActionDatabase actionsDatabase)
+ {
+ SerializedObject serialized = new SerializedObject(settings);
+ serialized.FindProperty(nameof(settings.actions))
+ .FindPropertyRelative(nameof(settings.actions.defaultDatabase)).objectReferenceValue = actionsDatabase;
+
+ serialized.FindProperty(nameof(settings.behaviors))
+ .FindPropertyRelative(nameof(settings.behaviors.defaultDatabase)).objectReferenceValue =
+ behaviorsDatabase;
+
+ serialized.FindProperty(nameof(settings.appearances))
+ .FindPropertyRelative(nameof(settings.appearances.defaultDatabase)).objectReferenceValue =
+ appearanceDatabase;
+
+ serialized.ApplyModifiedProperties();
+ serialized.Update();
+ }
+
+
+ static TextAnimatorSettings GetOrCreateSettings(string installationFolder)
+ {
+ if(TextAnimatorSettings.Instance)
+ return TextAnimatorSettings.Instance;
+
+ return _CreateScriptableAssetAtPath(installationFolder + "/Resources", TextAnimatorSettings.expectedName);
+ }
+
+
+
+ ///
+ /// Creates a new settings file (with databases) inside the installation's Resources folder.
+ /// Also assigns default effects and actions databases,
+ /// either looking if they already exist or by creating new ones.
+ ///
+ ///
+ /// P.S. A new settings file will be created even if it already exists but in another folder,
+ /// as the user might have moved it for archive/backups purposes.
+ ///
+ public static void FixSettingsFileNotFound()
+ {
+ GetOrCreateInstallationData();
+ if (!TryGetInstallationFolder(out string installationFolder))
+ {
+ Debug.LogError("Something went wrong in locating TextAnimator's installation data.");
+ return;
+ }
+
+ DatabaseType GetOrCreateDatabase(string folderName, string fileName, EffectCategory category)
+ where DatabaseType : Database where ElementType : ScriptableObject, ITagProvider
+ {
+ string databaseGuid = AssetDatabase.FindAssets($"t:{nameof(DatabaseType)}").FirstOrDefault();
+
+ if (!string.IsNullOrEmpty(databaseGuid))
+ {
+ return AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(databaseGuid));
+ }
+
+ // tries creating new database
+ if (TryGetInstallationFolder(out installationFolder))
+ {
+ return _CreateDatabase(installationFolder, folderName, fileName, category);
+ }
+
+ return null;
+ }
+
+ var settings = GetOrCreateSettings(installationFolder);
+ AssignDatabasesToSettings(settings,
+ GetOrCreateDatabase("Behaviors", "Behaviors Database", EffectCategory.Behaviors),
+ GetOrCreateDatabase("Appearances",
+ "Appearances Database", EffectCategory.Appearances),
+ GetOrCreateDatabase("Actions", "Actions Database", EffectCategory.None));
+ }
+
+
+ #endregion
+
+ #region Updating to new versions
+
+ ///
+ /// Checks for stuff and updates some project files if needed
+ ///
+ ///
+ static void UpdateProject(TextAnimatorInstallationData installationData)
+ {
+ //TODO on new update
+ installationData.latestVersion = currentVersion;
+ EditorUtility.SetDirty(installationData);
+ }
+
+ #endregion
+
+ #region Utilties
+
+ public static void _CreateDirectoryIfDoesntExist(string path)
+ {
+ string[] folders = path.Split('/');
+ string subPath = folders[0];
+ for (int i = 1; i < folders.Length; i++)
+ {
+ if (!AssetDatabase.IsValidFolder(subPath + '/' + folders[i]))
+ AssetDatabase.CreateFolder(subPath, folders[i]);
+ subPath += $"/{folders[i]}";
+ }
+ }
+
+ static Type[] GetScriptableElementsFromAssembly() where T : ScriptableObject, ITagProvider
+ {
+ return System.AppDomain.CurrentDomain.GetAssemblies()
+ .SelectMany(s => s.GetTypes())
+ .Where(p => typeof(T).IsAssignableFrom(p) && !p.IsInterface && !p.IsAbstract)
+ .Where(s => s.Assembly.FullName.StartsWith("Febucci.TextAnimator.Runtime"))
+ .ToArray();
+ }
+
+ public static T _CreateScriptableAssetAtPath(string path, string objectName) where T : ScriptableObject
+ {
+ var scriptable = CreateInstance();
+ scriptable.name = objectName;
+ PlaceScriptableAtPath(scriptable, path);
+ return scriptable;
+ }
+
+ static void PlaceScriptableAtPath(ScriptableObject scriptable, string path)
+ {
+ _CreateDirectoryIfDoesntExist(path);
+ AssetDatabase.CreateAsset(scriptable, path + $"/{scriptable.name}.asset");
+ }
+
+ #endregion
+
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs.meta
new file mode 100644
index 0000000..a64a070
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 0301c4642b7847db8af9a12e47083bf3
+timeCreated: 1677691499
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core.meta
new file mode 100644
index 0000000..afd6600
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: aa8ee49190adc45c5a5fea31311af75a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs
new file mode 100644
index 0000000..35598e2
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs
@@ -0,0 +1,55 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI.Core
+{
+ ///
+ /// Could draw anything
+ ///
+ class GenericSharedDrawer : SharedDrawer
+ {
+
+ bool showScript;
+ public GenericSharedDrawer(bool showScript)
+ {
+ this.showScript = showScript;
+ }
+
+ protected override void _OnInspectorGUI()
+ {
+ //draws every visible property (first level children only) of the base serialized object
+ var iterator = baseObject.GetIterator();
+ iterator.NextVisible(true);
+ do
+ {
+ if (iterator.name == "m_Script")
+ {
+ if (showScript)
+ {
+ GUI.enabled = false;
+ EditorGUILayout.PropertyField(iterator, true);
+ GUI.enabled = true;
+ }
+
+ continue;
+ }
+
+ if (iterator.isArray)
+ {
+ EditorGUILayout.PropertyField(iterator, true);
+ }
+ else
+ {
+ EditorGUILayout.BeginHorizontal();
+ //if (iterator.displayName.Length > 0)
+ //EditorGUILayout.PrefixLabel(iterator.displayName.Replace("Base ", ""));
+ EditorGUILayout.PropertyField(iterator, true);
+ //EditorGUILayout.PropertyField(iterator, GUIContent.none, true);
+ EditorGUILayout.EndHorizontal();
+ }
+
+ } while (iterator.NextVisible(false)) ;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs.meta
new file mode 100644
index 0000000..40e404d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f18ab2a0e017d4193b01c358f796c4b2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs
new file mode 100644
index 0000000..d8dfad3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs
@@ -0,0 +1,69 @@
+using UnityEditor;
+
+namespace Febucci.UI.Core
+{
+ ///
+ /// Base class that can be used to create drawers used by multiple
+ /// custom editors, both components and scriptable objects
+ ///
+ [System.Serializable]
+ abstract class SharedDrawer
+ {
+ protected SerializedProperty baseProperty;
+ protected SerializedObject baseObject;
+ bool initialized;
+
+ protected virtual void OnEnabled(SerializedObject baseObject) { }
+
+ public void OnInspectorGUI(SerializedProperty baseProperty)
+ {
+ if(baseProperty == null) return;
+ if(baseProperty.objectReferenceValue == null) return;
+
+ if (baseProperty != this.baseProperty)
+ initialized = false;
+
+ if(!initialized)
+ {
+ this.baseProperty = baseProperty;
+ //hacky unity way to reach the actual serialized object
+ this.baseObject = new SerializedObject(baseProperty.objectReferenceValue);
+ OnEnabled(baseObject);
+ initialized = true;
+ }
+
+ baseObject.Update();
+ _OnInspectorGUI();
+
+ ApplyChanges();
+ }
+
+ public void OnInspectorGUI(SerializedObject baseObject)
+ {
+ if (baseObject == null) return;
+ if (this.baseObject != baseObject)
+ initialized = false;
+
+ if (!initialized)
+ {
+ this.baseObject = baseObject;
+ OnEnabled(baseObject);
+ initialized = true;
+ }
+
+ baseObject.Update();
+ _OnInspectorGUI();
+
+ ApplyChanges();
+ }
+
+ protected virtual void _OnInspectorGUI() { }
+
+ protected void ApplyChanges()
+ {
+ if (baseObject.hasModifiedProperties)
+ baseObject.ApplyModifiedProperties();
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs.meta
new file mode 100644
index 0000000..0dc98a3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f91133a2133874ec7a3239f6932eefad
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs
new file mode 100644
index 0000000..e112634
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs
@@ -0,0 +1,75 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Febucci.UI
+{
+ public static class TexturesLoader
+ {
+ const string localPath_resourcesFolder = "Text Animator";
+
+ static Texture aboutLogo;
+ public static Texture AboutLogo
+ {
+ get
+ {
+ if(!aboutLogo) aboutLogo = Resources.Load(localPath_resourcesFolder+"/about_logo");
+ return aboutLogo;
+ }
+ }
+
+
+ static Texture stopIcon;
+ public static Texture StopIcon
+ {
+ get
+ {
+ if(!stopIcon) stopIcon = Resources.Load(localPath_resourcesFolder+"/stop_icon");
+ return stopIcon;
+ }
+ }
+
+ static Texture restartIcon;
+ public static Texture RestartIcon
+ {
+ get
+ {
+ if(!restartIcon) restartIcon = Resources.Load(localPath_resourcesFolder+"/restart_icon");
+ return restartIcon;
+ }
+ }
+
+ static Texture saveIcon;
+ public static Texture SaveIcon
+ {
+ get
+ {
+ if(!saveIcon) saveIcon = Resources.Load(localPath_resourcesFolder+"/save_icon");
+ return saveIcon;
+ }
+ }
+
+ static Texture playIcon;
+ public static Texture PlayIcon
+ {
+ get
+ {
+ if(!playIcon) playIcon = Resources.Load(localPath_resourcesFolder+"/play_icon");
+ return playIcon;
+ }
+ }
+
+ static Texture pauseIcon;
+ public static Texture PauseIcon
+ {
+ get
+ {
+ if(!pauseIcon) pauseIcon = Resources.Load(localPath_resourcesFolder+"/pause_icon");
+ return pauseIcon;
+ }
+ }
+
+
+ public static Texture WarningIcon => EditorGUIUtility.IconContent("Warning").image;
+ public static Texture ErrorIcon => EditorGUIUtility.IconContent("Error").image;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs.meta
new file mode 100644
index 0000000..85f01ca
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bfd3592baf4bc4a84a1c008acf9aac45
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef
new file mode 100644
index 0000000..092219b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef
@@ -0,0 +1,18 @@
+{
+ "name": "Febucci.TextAnimator.Editor",
+ "rootNamespace": "",
+ "references": [
+ "GUID:1e113d3b5d77bc04eab508251483e8ff"
+ ],
+ "includePlatforms": [
+ "Editor"
+ ],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef.meta
new file mode 100644
index 0000000..6e1d414
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0306e69412d8fbf41a94465bbaf34341
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources.meta
new file mode 100644
index 0000000..039957c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44dfac1202f97428c8f53d2d01bc88cb
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator.meta
new file mode 100644
index 0000000..d1d987a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a149d8b764bcf4a398f25186fb0db4e4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png
new file mode 100644
index 0000000..7862fdc
Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png differ
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png.meta
new file mode 100644
index 0000000..c5cc739
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: 04f06a54beeb7574a8c2b2083e7be396
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ 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
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: -1
+ mipBias: -100
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 512
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 512
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 4c61e790940ecb64e876d955039cd056
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png
new file mode 100644
index 0000000..cf1056c
Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png differ
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png.meta
new file mode 100644
index 0000000..afa0f43
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: 58094e2ec45f7480e81fb4a78bc2dd66
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ 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
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 0
+ aniso: -1
+ mipBias: -100
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 32
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 32
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png
new file mode 100644
index 0000000..49f3649
Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png differ
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png.meta
new file mode 100644
index 0000000..0a05054
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: 8d8fcd591cdad453fb3c120cb0d3f43d
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ 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
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 0
+ aniso: -1
+ mipBias: -100
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 32
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 32
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png
new file mode 100644
index 0000000..5576087
Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png differ
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png.meta
new file mode 100644
index 0000000..0c5817a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: 6ca8dac30112340e78d79a57c6348d72
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ 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
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 0
+ aniso: -1
+ mipBias: -100
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 32
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 32
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png
new file mode 100644
index 0000000..8a480e4
Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png differ
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png.meta
new file mode 100644
index 0000000..7990162
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: 039155adb637742a997e9d56b089e95f
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ 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
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 0
+ aniso: -1
+ mipBias: -100
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 32
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 32
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png
new file mode 100644
index 0000000..d91c70c
Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png differ
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png.meta
new file mode 100644
index 0000000..f3c448f
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png.meta
@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: 9c056a25dd76643ba8f1ee229906a71b
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ 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
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: -1
+ mipBias: -100
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime.meta
new file mode 100644
index 0000000..361de8b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: df7d5220397fe2547bef0d83a82cd45c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components.meta
new file mode 100644
index 0000000..5062453
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2f9d800b5adc74d4f9570b41fc986a5e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator.meta
new file mode 100644
index 0000000..3aae68a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a82ba40ede495c24a8ac264fc5945681
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro.meta
new file mode 100644
index 0000000..43a79c7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c5ac60f2cc66e4d4ca386fe558fd4be6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef
new file mode 100644
index 0000000..81ab5c0
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef
@@ -0,0 +1,30 @@
+{
+ "name": "Febucci.TextAnimator.TMP.Runtime",
+ "rootNamespace": "",
+ "references": [
+ "GUID:1e113d3b5d77bc04eab508251483e8ff",
+ "GUID:6055be8ebefd69e48b49212b09b47b2f"
+ ],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [
+ "TANIM_TMP_PRESENT"
+ ],
+ "versionDefines": [
+ {
+ "name": "com.unity.textmeshpro",
+ "expression": "",
+ "define": "TANIM_TMP_PRESENT"
+ },
+ {
+ "name": "com.unity.ugui",
+ "expression": "2.0.0",
+ "define": "TANIM_TMP_PRESENT"
+ }
+ ],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef.meta
new file mode 100644
index 0000000..5823305
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e539678cf69674b418d82e89c16a9753
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs
new file mode 100644
index 0000000..211df45
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs
@@ -0,0 +1,86 @@
+using System.Text;
+
+namespace Febucci.UI.Core.Parsing
+{
+ public class TMPTagParser : TagParserBase
+ {
+ readonly bool richTagsEnabled;
+
+ //PS no "noparse" since it's already checked
+ static readonly TMPTagInfo[] lookups = new[]
+ {
+ new TMPTagInfo(""),
+ new TMPTagInfo(""), new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""), new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),new TMPTagInfo( ""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""), new TMPTagInfo(""),
+ new TMPTagInfo(""), new TMPTagInfo(""),
+ new TMPTagInfo(""), new TMPTagInfo( ""), new TMPTagInfo( ""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""), new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo("
"), new TMPTagInfo(""),
+ new TMPTagInfo(""), new TMPTagInfo(""),
+ new TMPTagInfo(""),
+ new TMPTagInfo(""), new TMPTagInfo( ""),
+ new TMPTagInfo(""), new TMPTagInfo( ""),
+ new TMPTagInfo(""), new TMPTagInfo( ""),
+ new TMPTagInfo(""), new TMPTagInfo( ""),
+ new TMPTagInfo(""),
+ new TMPTagInfo("")
+ };
+
+ struct TMPTagInfo
+ {
+ public readonly string tagOpening;
+ public readonly bool increasesTextLength;
+
+ public TMPTagInfo(string tagOpening, bool increasesTextLength = false)
+ {
+ this.tagOpening = tagOpening;
+ this.increasesTextLength = increasesTextLength;
+ }
+ }
+
+ public TMPTagParser(bool richTagsEnabled, char openingBracket, char closingBracket, char closingTagSymbol)
+ : base(openingBracket, closingBracket, closingTagSymbol)
+ {
+ this.richTagsEnabled = richTagsEnabled;
+ }
+
+ public override bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder)
+ {
+ if (!richTagsEnabled) return false;
+
+ string fullTag = startSymbol + textInsideBrackets + endSymbol; //TODO improve
+
+ foreach (var lookupTag in lookups)
+ {
+ if (fullTag.StartsWith(lookupTag.tagOpening, true, System.Globalization.CultureInfo.InvariantCulture))
+ {
+ finalTextBuilder.Append(fullTag);
+ if (lookupTag.increasesTextLength) realTextIndex++;
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs.meta
new file mode 100644
index 0000000..a523d14
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4a3d19aed716a0144afe3d3676bee59c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs
new file mode 100644
index 0000000..7f3addf
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs
@@ -0,0 +1,238 @@
+using Febucci.UI.Core;
+using Febucci.UI.Core.Parsing;
+using TMPro;
+using UnityEngine;
+
+namespace Febucci.UI
+{
+ ///
+ /// Animates a TMP text component, both UI or World.
+ /// See for the base class information.
+ ///
+ [RequireComponent(typeof(TMP_Text))]
+ [AddComponentMenu("Febucci/TextAnimator/Text Animator - Text Mesh Pro")]
+ public sealed class TextAnimator_TMP : TAnimCore
+ {
+ ///
+ /// The TextMeshPro text component linked to this Text Animator
+ ///
+ public TMP_Text TMProComponent
+ {
+ get
+ {
+ if (tmpComponent) return tmpComponent;
+ CacheComponentsOnce();
+ return tmpComponent;
+ }
+ }
+
+ TMP_Text tmpComponent;
+ TMP_TextInfo textInfo;
+ TMP_InputField attachedInputField;
+
+ //----- Values cache -----
+ bool autoSize;
+ Rect sourceRect;
+ Color sourceColor;
+ int tmpFirstVisibleCharacter;
+ int tmpMaxVisibleCharacters;
+ //-----
+
+ bool componentsCached;
+ bool isUI;
+ void CacheComponentsOnce()
+ {
+ if(componentsCached) return;
+
+ if (!gameObject.TryGetComponent(out tmpComponent))
+ {
+ Debug.LogError($"TextAnimator_TMP {name} requires a TMP_Text component to work.", gameObject);
+ }
+
+ gameObject.TryGetComponent(out attachedInputField);
+ componentsCached = true;
+ isUI = tmpComponent is TextMeshProUGUI;
+ }
+
+ protected override void OnInitialized()
+ {
+ CacheComponentsOnce();
+
+ //prevents the text from being rendered at startup
+ //e.g. in case user has stuff on the inspector
+ tmpComponent.renderMode = TextRenderFlags.DontRender;
+ }
+
+ protected override void OnEnable()
+ {
+ base.OnEnable();
+ textInfo = TMProComponent.textInfo;
+ }
+
+ #region Text
+
+ protected override TagParserBase[] GetExtraParsers()
+ {
+ return new TagParserBase[1] {new TMPTagParser(tmpComponent.richText, '<', '/', '>')};
+ }
+
+ public override string GetOriginalTextFromSource() => TMProComponent.text;
+ public override string GetStrippedTextFromSource() => tmpComponent.GetParsedText();
+
+ ///
+ /// Equivalent to setting the text to the TMP component, without parsing it.
+ /// Please use or instead.
+ ///
+ ///
+ public override void SetTextToSource(string text)
+ {
+ //Avoids rendering the text for half a frame
+ TMProComponent.renderMode = TextRenderFlags.DontRender;
+
+ //--generates mesh and text info--
+ if (attachedInputField) attachedInputField.text = text; //renders input field
+ else tmpComponent.text = text; //<-- sets the text
+
+ OnForceMeshUpdate();
+
+ textInfo = tmpComponent.GetTextInfo(tmpComponent.text);
+
+#if UNITY_EDITOR
+ if (!Application.isPlaying)
+ {
+ //needed to update tmp mesh from editor
+ tmpComponent.havePropertiesChanged = true;
+ UnityEditor.EditorUtility.SetDirty(tmpComponent);
+ }
+ else
+#endif
+ tmpComponent.renderMode = TextRenderFlags.DontRender;
+ }
+ #endregion
+
+ protected override bool IsReady() => componentsCached && (!isUI || tmpComponent.canvas);
+ #region Characters
+ protected override int GetCharactersCount() => textInfo.characterCount;
+ #endregion
+
+ #region Checks
+ protected override bool HasChangedRenderingSettings()
+ {
+ return tmpComponent.havePropertiesChanged
+ //changing the properties below doesn't seem to trigger 'havePropertiesChanged', so we're checking them manually
+ || tmpComponent.enableAutoSizing != autoSize
+ || tmpComponent.rectTransform.rect != sourceRect
+ || tmpComponent.color != sourceColor
+ || tmpComponent.firstVisibleCharacter != tmpFirstVisibleCharacter
+ || tmpComponent.maxVisibleCharacters != tmpMaxVisibleCharacters;
+ }
+
+ protected override bool HasChangedText(string strippedText)
+ {
+ if(string.IsNullOrEmpty(tmpComponent.text) && string.IsNullOrEmpty(strippedText))
+ return false;
+
+ if (string.IsNullOrEmpty(tmpComponent.text) != string.IsNullOrEmpty(strippedText))
+ return true;
+
+ return !tmpComponent.text.Equals(strippedText);
+ }
+
+ #endregion
+
+ #region Mesh
+
+ protected override void CopyMeshFromSource(ref CharacterData[] characters)
+ {
+ autoSize = tmpComponent.enableAutoSizing;
+ sourceRect = tmpComponent.rectTransform.rect;
+ sourceColor = tmpComponent.color;
+ tmpFirstVisibleCharacter = tmpComponent.firstVisibleCharacter;
+ tmpMaxVisibleCharacters = tmpComponent.maxVisibleCharacters;
+
+ TMP_CharacterInfo currentCharInfo;
+
+ //Updates the characters sources
+ for (int i = 0; i < textInfo.characterCount && i < characters.Length; i++)
+ {
+ currentCharInfo = textInfo.characterInfo[i];
+ characters[i].info.isRendered = currentCharInfo.isVisible;
+ characters[i].info.character = currentCharInfo.character;
+ //Updates TMP char info
+ //characters[i].current.tmp_CharInfo = textInfo.characterInfo[i];
+
+ //Copies source data from the mesh info only if the character is valid, otherwise its vertices array will be null and tAnim will start throw errors
+ if (!currentCharInfo.isVisible) continue;
+
+ characters[i].info.pointSize = currentCharInfo.pointSize;
+
+ //Updates vertices
+ for (byte k = 0; k < TextUtilities.verticesPerChar; k++)
+ {
+ characters[i].source.positions[k] = textInfo.meshInfo[currentCharInfo.materialReferenceIndex].vertices[currentCharInfo.vertexIndex + k];
+ }
+
+ //Updates colors
+ for (byte k = 0; k < TextUtilities.verticesPerChar; k++)
+ {
+ characters[i].source.colors[k] = textInfo.meshInfo[currentCharInfo.materialReferenceIndex].colors32[currentCharInfo.vertexIndex + k];
+ }
+ }
+ }
+
+ protected override void PasteMeshToSource(CharacterData[] characters)
+ {
+
+ TMP_CharacterInfo currentCharInfo;
+
+ //Updates the mesh
+ for (int i = 0; i < textInfo.characterCount && i < CharactersCount; i++)
+ {
+ currentCharInfo = textInfo.characterInfo[i];
+ //Avoids updating if we're on an invisible character, like a spacebar
+ //Do not switch this with "i tmpComponent.ForceMeshUpdate(true);
+ #endregion
+
+ #region Obsolete
+
+ [System.Obsolete("This method is Obsolete. Please check through the 'Characters' array instead.")]
+ public bool TryGetNextCharacter(out TMP_CharacterInfo result)
+ {
+ if(latestCharacterShown.index TMProComponent;
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs.meta
new file mode 100644
index 0000000..c0dfd5a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e8ace8ced0e81c847968cdca0aeda757
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core.meta
new file mode 100644
index 0000000..1a70987
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fcc9bd3818c90824396a4b66126b13d9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs
new file mode 100644
index 0000000..9d3c4ed
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs
@@ -0,0 +1,14 @@
+namespace Febucci.UI
+{
+ public enum AnimationLoop
+ {
+ Update = 0,
+
+ LateUpdate = 1,
+
+ ///
+ /// Via Script
+ ///
+ Script = 2
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs.meta
new file mode 100644
index 0000000..c4ab1f7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 98cf9e54383e4c35bd21cabe037c5fbc
+timeCreated: 1672434576
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs
new file mode 100644
index 0000000..d581d9e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs
@@ -0,0 +1,1342 @@
+using System;
+using System.Text;
+using Febucci.UI.Actions;
+using Febucci.UI.Core.Parsing;
+using Febucci.UI.Effects;
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Febucci.UI.Core
+{
+ [DisallowMultipleComponent]
+ [HelpURL("https://www.febucci.com/text-animator-unity/docs/how-to-add-effects-to-your-texts/")]
+ public abstract class TAnimCore : MonoBehaviour
+ {
+ #region Types
+ enum ShowTextMode : byte
+ {
+ Hidden = 0,
+ Shown = 1,
+ UserTyping = 2,
+ Refresh = 3
+ }
+ #endregion
+
+ #region Variables
+ bool initialized;
+ bool requiresTagRefresh;
+
+ #region Options
+ ///
+ /// If the source text changes, should the typewriter start automatically?
+ ///
+ ///
+ /// Requires a Typewriter component if true.
+ ///
+ [Tooltip("If the source text changes, should the typewriter start automatically? Requires a Typewriter component if true.\nP.s. Previously, this option was called 'Use Easy Integration'.")]
+ public bool typewriterStartsAutomatically = false;
+ TypewriterCore _typewriterCache;
+ ///
+ /// Linked TAnimPlayer to this component
+ ///
+ TypewriterCore typewriter
+ {
+ get
+ {
+ if (_typewriterCache != null)
+ return _typewriterCache;
+
+#if UNITY_2019_2_OR_NEWER
+ if(!TryGetComponent(out _typewriterCache))
+ {
+ Debug.LogError($"Typewriter component is null on GameObject {gameObject.name}. Please add a typewriter on the same GameObject or set 'Typewriter Starts Automatically' to false.", this.gameObject);
+ }
+#else
+ _tAnimPlayer = GetComponent();
+ Assert.IsNotNull(_tAnimPlayer, $"Text Animator Player component is null on GameObject {gameObject.name}");
+#endif
+
+ return _typewriterCache;
+ }
+ }
+
+
+ ///
+ /// Controls when Text Animator should update its effects. Set it to if you want to control the animations from your own loop, invoking the method.
+ ///
+ [Tooltip("Controls when this TextAnimator component should update its effects. Defaults in the 'Update' Loop.\nSet it to 'Manual' if you want to control the animations from your own loop instead.")]
+ public AnimationLoop animationLoop = AnimationLoop.Update;
+
+ ///
+ /// Chooses which Time Scale to use when automatically animating effects (in other words, when the Update Mode is not set to Script). Set it to if you want to animate effects even when the game is paused.
+ ///
+ [Tooltip("Chooses which Time Scale to use when animating effects.\nSet it to 'Unscaled' if you want to animate effects even when the game is paused.")]
+ public TimeScale timeScale = TimeScale.Scaled;
+
+ #endregion
+
+ #region Text
+ ///
+ /// The original text pasted to Text Animator, with all its tags
+ ///
+ [SerializeField, TextArea(4, 10), HideInInspector] string _text = string.Empty;
+ public string textFull
+ {
+ get => _text;
+ set
+ {
+ if(typewriterStartsAutomatically
+ #if UNITY_EDITOR
+ && Application.isPlaying
+ #endif
+ && typewriter
+ )
+ {
+ SetTypewriterText(value);
+ return;
+ }
+
+ SetText(value);
+ }
+ }
+
+ ///
+ /// The text without any Text Animator tag
+ ///
+ ///
+ /// PS. this might still contain other tags from different supported plugins, like "color" from TMPro.
+ /// To get the full stripped text, see .
+ ///
+ public string textWithoutTextAnimTags { get; private set; } = string.Empty;
+ public string textWithoutAnyTag { get; private set; } = string.Empty;
+
+ bool hasText => charactersCount > 0;
+
+ public CharacterData latestCharacterShown { get; private set; }
+
+ ///
+ /// true if the text is entirely visible, including waiting for appearance effects to finish
+ /// (as they might still hide a character until the very end)
+ ///
+ ///
+ /// You can use this to check if all the letters have been shown.
+ ///
+ public bool allLettersShown
+ {
+ get
+ {
+ if (_maxVisibleCharacters < charactersCount) return false;
+ if (_firstVisibleCharacter == _maxVisibleCharacters) return false;
+
+ for (int i = 0; i < charactersCount; i++)
+ {
+ if (!characters[i].isVisible)
+ {
+ if (characters[i].passedTime <= 0)
+ return false;
+ }
+ else
+ {
+ if (characters[i].info.isRendered && characters[i].passedTime < characters[i].info.appearancesMaxDuration)
+ return false;
+ }
+ }
+
+ return true;
+ }
+ }
+
+
+ ///
+ /// true if any letter is still visible in the text
+ ///
+ ///
+ /// You can use this to check if the disappearance effects are still running.
+ ///
+ public bool anyLetterVisible //TODO test
+ {
+ get
+ {
+ if (characters.Length == 0) return true;
+
+ bool IsCharacterVisible(int index)
+ {
+ return characters[index].passedTime > 0;
+ }
+
+ //searches for the first character or the last one first, since they're most probably the first ones to be shown (based on orientation)
+ if (IsCharacterVisible(0) || IsCharacterVisible(charactersCount-1))
+ return true;
+
+ //searches for the other, which might still be running their appearance/disappearance
+ for(int i=1;i
+ /// Number of characters in the text
+ ///
+ int charactersCount;
+ public int CharactersCount
+ {
+ get => charactersCount;
+ }
+ CharacterData[] characters;
+ ///
+ /// The array of characters currently present in the text.
+ ///
+ ///
+ /// This array might be larger than the actual number of characters, so please cycle for instead.
+ ///
+ public CharacterData[] Characters
+ {
+ get => characters;
+ }
+
+ int wordsCount;
+ ///
+ /// Number of words in the text
+ ///
+ public int WordsCount
+ {
+ get => wordsCount;
+ }
+
+ WordInfo[] words;
+ ///
+ /// The array of words currently present in the text.
+ ///
+ ///
+ /// This array might be larger than the actual number of words, so please cycle for instead.
+ ///
+ public WordInfo[] Words => words;
+
+ //---CHARS SIZE/INTENSITY---
+
+ ///
+ /// True if you want the animations to be uniform/consistent across different font sizes. Default/Suggested to leave this as true, and change . Otherwise, effects will move more when the text is smaller (requires less space on screen).
+ ///
+ [Tooltip("True if you want the animations to be uniform/consistent across different font sizes. Default/Suggested to leave this as true, and change the 'Reference Font Size'.\nOtherwise, effects will move more when the text is smaller (requires less space on screen)")]
+ public bool useDynamicScaling = true;
+
+ ///
+ /// Font size that will be used as reference to keep animations consistent/uniform at different scales. Works only if is set to true.
+ ///
+ [Tooltip("Font size that will be used as reference to keep animations consistent/uniform at different scales.")]
+ public float referenceFontSize = 10;
+
+
+ //---OTHERS---
+
+ ///
+ /// True if you want the animator's time to be reset on new text.
+ ///
+ [Tooltip("True if you want the animator's time to be reset on new text.")]
+ [FormerlySerializedAs("isResettingEffectsOnNewText")] public bool isResettingTimeOnNewText = true;
+
+ #endregion
+
+ #region Effects and Databases
+
+ bool isAnimatingBehaviors = true;
+ bool isAnimatingAppearances = true;
+
+ ///
+ /// True if you want to use the databases referenced in the asset, otherwise you can specify which databases to use in this component.
+ ///
+ [Tooltip("Lets you use the databases referenced in the 'TextAnimatorSettings' asset.\nSet to false if you'd like to specify which databases to use in this component.")]
+ public bool useDefaultDatabases = true;
+
+ // ----------------
+ // -- Databases --
+ // ----------------
+ [SerializeField] AnimationsDatabase databaseBehaviors;
+ ///
+ /// Behaviors Database used by this Text Animator. If is set to true, this will be the default database from the asset.
+ ///
+ public AnimationsDatabase DatabaseBehaviors
+ {
+ get => useDefaultDatabases ? TextAnimatorSettings.Instance.behaviors.defaultDatabase : databaseBehaviors;
+ set
+ {
+ useDefaultDatabases = false;
+ databaseBehaviors = value;
+ requiresTagRefresh = true;
+ }
+ }
+
+ [SerializeField] AnimationsDatabase databaseAppearances;
+ ///
+ /// Appearances Database used by this Text Animator. If is set to true, this will be the default database from the asset.
+ ///
+ public AnimationsDatabase DatabaseAppearances
+ {
+ get => useDefaultDatabases ? TextAnimatorSettings.Instance.appearances.defaultDatabase : databaseAppearances;
+ set
+ {
+ useDefaultDatabases = false;
+ databaseAppearances = value;
+ requiresTagRefresh = true;
+ }
+ }
+
+ // ----------------
+ // -- Effects --
+ // ----------------
+ AnimationRegion[] behaviors;
+ ///
+ /// All the behavior effects that are applied to the current text.
+ ///
+ public AnimationRegion[] Behaviors
+ {
+ get => behaviors;
+ set => behaviors = value;
+ }
+
+ AnimationRegion[] appearances;
+ ///
+ /// All the appearance effects that are applied to the current text.
+ ///
+ public AnimationRegion[] Appearances
+ {
+ get => appearances;
+ set => appearances = value;
+ }
+ AnimationRegion[] disappearances;
+
+ ///
+ /// All the disappearance effects that are applied to the current text.
+ ///
+ public AnimationRegion[] Disappearances
+ {
+ get => disappearances;
+ set => disappearances = value;
+ }
+ #endregion
+
+ #region Actions and Events
+ ActionMarker[] actions;
+
+ ///
+ /// All the actions that have been parsed from the current text, and that will be used by a component if present.
+ ///
+ public ActionMarker[] Actions
+ {
+ get => actions;
+ set => actions = value;
+ }
+
+
+ [SerializeField] ActionDatabase databaseActions;
+ ///
+ /// Actions Database used by this Text Animator. If is set to true, this will be the default database from the asset.
+ ///
+ public ActionDatabase DatabaseActions
+ {
+ get => useDefaultDatabases ? TextAnimatorSettings.Instance.actions.defaultDatabase : databaseActions;
+ set
+ {
+ databaseActions = value;
+ requiresTagRefresh = true;
+ }
+ }
+
+ EventMarker[] events;
+ ///
+ /// Events that have been parsed from the current text, and that will be used by a component if present.
+ ///
+ public EventMarker[] Events
+ {
+ get => events;
+ set => events = value;
+ }
+
+ #endregion
+
+ #region Default Tags
+
+ struct DefaultRegion
+ {
+ public string[] tagWords;
+ public AnimationRegion region;
+
+ public DefaultRegion(string tagID, VisibilityMode visibilityMode, AnimationScriptableBase scriptable, string[] tagWords)
+ {
+ this.tagWords = tagWords;
+ this.region = new AnimationRegion(tagID, visibilityMode, scriptable);
+ }
+ }
+
+ [SerializeField] string[] defaultAppearancesTags = new []{"size"};
+ ///
+ /// Fallback/Constant tags that will be applied to the entire text, if no other tags are found, based on the value.
+ ///
+ public string[] DefaultAppearancesTags
+ {
+ get => defaultAppearancesTags;
+ set
+ {
+ defaultAppearancesTags = value;
+ requiresTagRefresh = true;
+ }
+ }
+ [SerializeField] string[] defaultDisappearancesTags = new []{"fade"};
+ ///
+ /// Fallback/Constant tags that will be applied to the entire text, if no other tags are found, based on the value.
+ ///
+ public string[] DefaultDisappearancesTags
+ {
+ get => defaultDisappearancesTags;
+ set
+ {
+ defaultDisappearancesTags = value;
+ requiresTagRefresh = true;
+ }
+ }
+
+ [SerializeField] string[] defaultBehaviorsTags;
+ ///
+ /// Fallback/Constant tags that will be applied to the entire text, if no other tags are found, based on the value.
+ ///
+ public string[] DefaultBehaviorsTags
+ {
+ get => defaultBehaviorsTags;
+ set
+ {
+ defaultBehaviorsTags = value;
+ requiresTagRefresh = true;
+ }
+ }
+ #endregion
+
+ #endregion
+
+ #region Abstract / Virtual
+ ///
+ /// Called once when the component is initialized.
+ ///
+ protected virtual void OnInitialized() { }
+
+ //----------------
+ //--Setting Text--
+ //----------------
+ public abstract string GetOriginalTextFromSource();
+ public abstract string GetStrippedTextFromSource();
+ public abstract void SetTextToSource(string text);
+
+ //----------------
+ //--Checking Changes--
+ //----------------
+ protected abstract bool HasChangedText(string strippedText);
+ protected abstract bool HasChangedRenderingSettings();
+
+ //-----------------
+ //--Setting Chars--
+ //-----------------
+ protected abstract int GetCharactersCount();
+
+ //-----------------
+ //---Setting Mesh--
+ //-----------------
+ protected abstract void OnForceMeshUpdate();
+ protected abstract void CopyMeshFromSource(ref CharacterData[] characters);
+ protected abstract void PasteMeshToSource(CharacterData[] characters);
+ #endregion
+
+ bool requiresMeshUpdate;
+ void ForceMeshUpdate()
+ {
+ requiresMeshUpdate = false;
+ OnForceMeshUpdate();
+ }
+
+ void Awake()
+ {
+ requiresTagRefresh = true;
+ TryInitializing();
+ }
+
+ void TryInitializing()
+ {
+ #if UNITY_EDITOR
+ if (!Application.isPlaying)
+ {
+ if(characters == null) //forces reset in editor
+ initialized = false;
+ }
+ #endif
+
+ if (initialized) return;
+
+ initialized = true;
+
+ TextUtilities.Initialize();
+ charactersCount = 0;
+ characters = new CharacterData[0];
+
+ wordsCount = 0;
+ words = new WordInfo[0];
+
+ behaviors = new AnimationRegion[0];
+ appearances = new AnimationRegion[0];
+ disappearances = new AnimationRegion[0];
+ actions = new ActionMarker[0];
+ events = new EventMarker[0];
+
+ if(DatabaseActions) DatabaseActions.ForceBuildRefresh();
+ if(DatabaseAppearances) DatabaseAppearances.ForceBuildRefresh();
+ if(DatabaseBehaviors) DatabaseBehaviors.ForceBuildRefresh();
+
+ OnInitialized();
+ }
+
+ ///
+ /// Contains TextAnimator's current time values.
+ ///
+ [HideInInspector] public TimeData time;
+
+
+ void UpdateUniformIntensity()
+ {
+ if(useDynamicScaling)
+ {
+ for (int i = 0; i < characters.Length; i++)
+ {
+ // multiplies by current character size, which could be modified by "size" tags and so
+ // be different than the basic tmp font size value
+ characters[i].UpdateIntensity(referenceFontSize);
+ }
+ }
+ else
+ {
+ for (int i = 0; i < characters.Length; i++)
+ {
+ characters[i].uniformIntensity = 1;
+ }
+ }
+ }
+
+ public enum DefaultTagsMode
+ {
+ ///
+ /// Applies effects only to characters that don't have any.
+ ///
+ Fallback = 0,
+ ///
+ /// Applies effects to all the characters, even if they already have other tags via text.
+ ///
+ Constant = 1
+ }
+
+ ///
+ /// Controls how default tags should be applied.\n"Fallback" will apply the effects only to characters that don't have any.\n"Constant" will apply the default effects to all the characters, even if they already have other tags via text.
+ ///
+ [Tooltip("Controls how default tags should be applied.\n\"Fallback\" will apply the effects only to characters that don't have any.\n\"Constant\" will apply the default effects to all the characters, even if they already have other tags via text.")]
+ public DefaultTagsMode defaultTagsMode = DefaultTagsMode.Fallback;
+
+ #region Text
+
+ protected virtual TagParserBase[] GetExtraParsers(){ return Array.Empty(); }
+
+ TextAnimatorSettings settings;
+ void ConvertText(string textToParse, ShowTextMode showTextMode)
+ {
+ #region Local Methods
+ void PopulateCharacters()
+ {
+ if (characters.Length < charactersCount)
+ Array.Resize(ref characters, charactersCount);
+
+ for (int i = 0; i < charactersCount; i++)
+ {
+ //--Resets info--
+ characters[i].ResetInfo(i);
+
+ //--Assigns effect times--
+ float CalculateRegionMaxDuration(AnimationRegion[] tags)
+ {
+ float maxDuration = 0;
+ float currentDuration;
+ //For each tag
+ foreach(var tag in tags)
+ {
+ //for each range
+ foreach(var range in tag.ranges)
+ {
+ //If the region contains the character
+ if (i>=range.indexes.x && i maxDuration)
+ {
+ //Assigns the new max
+ maxDuration = currentDuration;
+ }
+ }
+ }
+ }
+
+ return maxDuration;
+ }
+
+ characters[i].info.disappearancesMaxDuration = CalculateRegionMaxDuration(disappearances);
+ characters[i].info.appearancesMaxDuration = CalculateRegionMaxDuration(appearances);
+ }
+ }
+
+ void CalculateWords()
+ {
+ StringBuilder currentWord = new StringBuilder();
+ wordsCount = charactersCount;
+
+ if (words.Length < wordsCount)
+ Array.Resize(ref words, wordsCount);
+
+ int tempLength = 0;
+ int wordIndex = 0;
+ int currentFirstIndex = 0;
+ for (int i = 0; i < charactersCount; i++)
+ {
+ if (!char.IsWhiteSpace(characters[i].info.character))
+ {
+ characters[i].wordIndex = wordIndex;
+ currentWord.Append(characters[i].info.character);
+ tempLength++;
+ continue;
+ }
+ else
+ {
+ characters[i].wordIndex = -1;
+ }
+
+ if (tempLength > 0)
+ {
+ words[wordIndex] = new WordInfo(
+ currentFirstIndex,
+ currentFirstIndex + tempLength - 1,
+ currentWord.ToString());
+ currentFirstIndex += tempLength+1; //removes additional space
+ wordIndex++;
+ }
+ else
+ {
+ currentFirstIndex++; //proceeds to shift white spaces etc.
+ }
+
+ currentWord.Clear();
+ tempLength = 0;
+ }
+
+ //Adds last
+ if (tempLength > 0)
+ {
+ words[wordIndex] = new WordInfo(
+ currentFirstIndex,
+ currentFirstIndex + tempLength - 1,
+ currentWord.ToString());
+ wordIndex++;
+ }
+
+ wordsCount = wordIndex;
+ }
+
+ void HideCharacterTime(int charIndex)
+ {
+ var c = characters[charIndex];
+ c.isVisible = false;
+ c.passedTime = 0;
+ c.Hide();
+ characters[charIndex] = c;
+ }
+
+ void HideAllCharactersTime()
+ {
+ for (int i = 0; i < charactersCount; i++)
+ {
+ HideCharacterTime(i);
+ }
+ }
+
+ void ShowCharacterTimes()
+ {
+ for (int i = 0; i < charactersCount; i++)
+ {
+ var c = characters[i];
+ c.isVisible = true;
+ c.passedTime = c.info.appearancesMaxDuration;
+ characters[i] = c;
+ }
+ }
+
+ bool IsCharacterInsideAnyEffect(int charIndex, AnimationRegion[] regions)
+ {
+ foreach (var region in regions)
+ {
+ foreach (var range in region.ranges)
+ {
+ if (charIndex >= range.indexes.x && (range.indexes.y == int.MaxValue || charIndex < range.indexes.y))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ void AddFallbackEffectsFor(ref AnimationRegion[] currentEffects, VisibilityMode visibilityMode, Database database, string[] defaultEffectsTags) where T : AnimationScriptableBase
+ {
+ if(!database) return;
+
+ if (defaultEffectsTags == null || defaultEffectsTags.Length == 0)
+ {
+ return;
+ }
+
+ //create list of default regions that should be added
+ var defaultRegions = new System.Collections.Generic.List();
+ string[] tagWords;
+ string tagName;
+ foreach (var tag in defaultEffectsTags)
+ {
+ if(string.IsNullOrEmpty(tag))
+ {
+ if(Application.isPlaying)
+ Debug.LogError($"Empty tag as default effect in database {database.name}. Skipping.", gameObject);
+ continue;
+ }
+
+ tagWords = tag.Split(' ');
+ tagName = tagWords[0];
+
+ if (!database.ContainsKey(tagName))
+ {
+ if(Application.isPlaying)
+ Debug.LogError($"Fallback effect with tag '{tagName}' not found in database {database.name}. Skipping.", gameObject);
+ continue;
+ }
+
+ defaultRegions.Add(new DefaultRegion(tagName, visibilityMode, database[tagName], tagWords));
+ }
+
+ //if there are no current effects, directly adds the default effects
+ if(currentEffects.Length == 0 || defaultTagsMode == DefaultTagsMode.Constant)
+ {
+ foreach(var element in defaultRegions)
+ {
+ element.region.OpenNewRange(0, element.tagWords);
+ }
+ }
+ else
+ {
+ //for every character in the text
+ for (int startIndex = 0; startIndex < charactersCount; startIndex++)
+ {
+ //if the character has no effect of this category assigned
+ if (!IsCharacterInsideAnyEffect(startIndex, currentEffects))
+ {
+ //opens new range for default effects
+ foreach (var element in defaultRegions)
+ {
+ //add the default effect to the character
+ //TODO performance can be improved by caching modifiers
+ element.region.OpenNewRange(startIndex, element.tagWords);
+ }
+
+ //until there are characters that are not inside this category
+ int endIndex = startIndex + 1;
+ for (; endIndex < charactersCount; endIndex++)
+ {
+ if (IsCharacterInsideAnyEffect(endIndex, currentEffects))
+ {
+ break;
+ }
+ }
+
+ //closes new range for default effects
+ foreach (var element in defaultRegions)
+ {
+ element.region.TryClosingRange(endIndex);
+ }
+
+ startIndex = endIndex;
+ }
+ }
+ }
+
+ //adds the default regions to the current effects
+ int prevCount = currentEffects.Length;
+ System.Array.Resize(ref currentEffects, currentEffects.Length + defaultRegions.Count);
+ for(int i = 0; i < defaultRegions.Count; i++)
+ {
+ currentEffects[prevCount + i] = defaultRegions[i].region;
+ }
+ }
+
+ #endregion
+
+ TryInitializing();
+
+ requiresTagRefresh = false;
+ _text = textToParse;
+
+ settings = TextAnimatorSettings.Instance;
+ if (!settings)
+ {
+ charactersCount = 0;
+ Debug.LogError("Text Animator Settings not found. Skipping setting the text to Text Animator.");
+ return;
+ }
+
+ // Uses default database from settings
+ if (useDefaultDatabases)
+ {
+ databaseBehaviors = settings.behaviors.defaultDatabase;
+ databaseAppearances = settings.appearances.defaultDatabase;
+ databaseActions = settings.actions.defaultDatabase;
+ }
+
+
+ var ruleBehavior = new AnimationParser(settings.behaviors.openingSymbol, '/', settings.behaviors.closingSymbol, VisibilityMode.Persistent, databaseBehaviors);
+ var ruleAppearance = new AnimationParser(settings.appearances.openingSymbol, '/', settings.appearances.closingSymbol, VisibilityMode.OnVisible, databaseAppearances);
+ var ruleDisappearance = new AnimationParser(settings.appearances.openingSymbol, '/', '#', settings.appearances.closingSymbol, VisibilityMode.OnHiding, databaseAppearances);
+ ActionParser ruleActions = new ActionParser(settings.actions.openingSymbol, '/', settings.actions.closingSymbol, databaseActions);
+ EventParser ruleEvents = new EventParser('<', '/', '>');
+
+ //TODO optimize
+ var parsers = new System.Collections.Generic.List()
+ {
+ ruleBehavior,
+ ruleAppearance,
+ ruleDisappearance,
+ ruleActions,
+ ruleEvents
+ };
+
+ foreach (var extraParser in GetExtraParsers())
+ {
+ parsers.Add(extraParser);
+ }
+
+ //Convert text in tags, mesh etc.
+ textWithoutTextAnimTags = TextParser.ParseText(_text, parsers.ToArray());
+
+ //Set converted text to source
+ SetTextToSource(textWithoutTextAnimTags);
+ textWithoutAnyTag = GetStrippedTextFromSource();
+ charactersCount = GetCharactersCount();
+
+ //Assigns results
+ behaviors = ruleBehavior.results;
+ appearances = ruleAppearance.results;
+ disappearances = ruleDisappearance.results;
+ actions = ruleActions.results;
+ events = ruleEvents.results;
+
+ //Adds fallback effects to characters that have no effect assigned
+ AddFallbackEffectsFor(ref behaviors, VisibilityMode.Persistent,databaseBehaviors, defaultBehaviorsTags);
+ AddFallbackEffectsFor(ref appearances, VisibilityMode.OnVisible, databaseAppearances, defaultAppearancesTags);
+ AddFallbackEffectsFor(ref disappearances, VisibilityMode.OnHiding, databaseAppearances, defaultDisappearancesTags);
+
+ //Initializes only animations that are being used
+ foreach (var behavior in behaviors) behavior.animation.InitializeOnce();
+ foreach (var appearance in appearances) appearance.animation.InitializeOnce();
+ foreach (var disappearance in disappearances) disappearance.animation.InitializeOnce();
+
+ //Prepares Characters
+ PopulateCharacters();
+ CopyMeshFromSource(ref characters);
+ CalculateWords();
+
+ switch(showTextMode)
+ {
+ case ShowTextMode.Hidden:
+ HideAllCharactersTime();
+ break;
+
+ case ShowTextMode.Shown:
+ ShowCharacterTimes();
+ break;
+
+ //user is typing, the latest letter has time reset
+ case ShowTextMode.UserTyping:
+ ShowCharacterTimes();
+ if (charactersCount > 1)
+ {
+ HideCharacterTime(charactersCount - 1);
+ characters[charactersCount - 1].isVisible = true;
+ }
+ break;
+
+ case ShowTextMode.Refresh:
+ //Does nothing
+ break;
+ }
+
+ _maxVisibleCharacters = charactersCount;
+
+ // Makes sure deltaTime is updated instantly, as user might change the timeScale on the same frame as the
+ // text is set (or even at Start/Awake) and typewriters might detect deltaTime of 0 and skip showing the text
+ time.UpdateDeltaTime(timeScale == TimeScale.Unscaled ? Time.unscaledDeltaTime : Time.deltaTime);
+
+ if(isResettingTimeOnNewText && showTextMode != ShowTextMode.Refresh)
+ time.RestartTime();
+ }
+
+ ///
+ /// Sets the text to Text Animator, parsing its rich text tags.
+ ///
+ /// Full text that you want to paste, including rich text tags.
+ /// This method shows the text instantly. To control if it should be hidden instead, please see .
+ public void SetText(string text) => ConvertText(text, ShowTextMode.Shown);
+ ///
+ /// Sets the text to Text Animator, parsing its rich text tags.
+ ///
+ ///
+ ///
+ public void SetText(string text, bool hideText) => ConvertText(text, hideText ? ShowTextMode.Hidden : ShowTextMode.Shown);
+
+ //TODO optimize, only add new stuff without recalculating text
+ ///
+ /// Adds text to the already existing one, parsing its rich text tags.
+ ///
+ /// New text that you want to append
+ ///
+ public void AppendText(string appendedText, bool hideText = false)
+ {
+ //Prevents appending an empty text
+ if (string.IsNullOrEmpty(appendedText))
+ return;
+
+ //The user is appending to an empty text
+ //so we set it instead
+ if (!hasText)
+ {
+ SetText(appendedText, hideText);
+ return;
+ }
+
+ bool previousResettingTime = isResettingTimeOnNewText;
+ isResettingTimeOnNewText = false;
+
+ int currentMax = maxVisibleCharacters;
+ int currentFirst = firstVisibleCharacter;
+ SetText(textFull + appendedText, hideText);
+
+ //restores visibility
+ isResettingTimeOnNewText = previousResettingTime;
+ maxVisibleCharacters = currentMax;
+ firstVisibleCharacter = currentFirst;
+ for (int i = firstVisibleCharacter; i < maxVisibleCharacters; i++)
+ {
+ characters[i].isVisible = true;
+ characters[i].passedTime = characters[i].info.appearancesMaxDuration;
+ }
+ }
+
+ void SetTypewriterText(string text)
+ {
+ //temp fix, opening and closing this TMPro tag (which won't be showed in the text, acting like they aren't there) because otherwise
+ //there isn't any way to trigger that the text has changed, if it's actually the same as the previous one.
+ if (text.Length <= 0) //forces clearing the mesh during the tempFix, without the tags
+ typewriter.ShowText("");
+ else
+ typewriter.ShowText($"{text}");
+ }
+
+ //TODO TEST
+ ///
+ /// Sets a character visibility.
+ ///
+ /// Character's index. See and the array.
+ /// Controls if the character should be visible
+ public void SetVisibilityChar(int index, bool isVisible)
+ {
+ if(index<0 ||index>=charactersCount) return;
+ characters[index].isVisible = isVisible;
+ if (isVisible) latestCharacterShown = characters[index];
+ }
+
+ //TODO TEST
+ ///
+ /// Sets a word visibility.
+ ///
+ /// Word's index. See and the array.
+ /// Controls if the word should be visible
+ public void SetVisibilityWord(int index, bool isVisible)
+ {
+ if(index<0 || index >= wordsCount) return;
+
+ WordInfo word = words[index];
+ for (int i = Mathf.Max(word.firstCharacterIndex, 0); i <= word.lastCharacterIndex && i < charactersCount; i++)
+ {
+ SetVisibilityChar(i, isVisible);
+ }
+ }
+
+
+ //TODO Test
+ ///
+ /// Sets the visibility of the entire text, also allowing to play or skip effects.
+ ///
+ ///
+ ///
+ public void SetVisibilityEntireText(bool isVisible, bool canPlayEffects = true)
+ {
+ for (int i = 0; i < charactersCount; i++)
+ {
+ SetVisibilityChar(i, isVisible);
+ }
+
+ if (!canPlayEffects)
+ {
+ if (isVisible)
+ {
+ for (int i = 0; i < charactersCount;i++)
+ {
+ characters[i].passedTime = characters[i].info.appearancesMaxDuration;
+ }
+ }
+ else
+ {
+ for (int i = 0; i < charactersCount;i++)
+ {
+ characters[i].passedTime = 0;
+ }
+ }
+ }
+ }
+
+ #endregion
+
+ #region Typing
+ int _firstVisibleCharacter;
+ ///
+ /// Handles the very first character allowed to be visible in the text.
+ ///
+ ///
+ /// Be aware that in order to visible, a character also needs to also have its own "visible" flag set to true. See and
+ ///
+ public int firstVisibleCharacter
+ {
+ get => _firstVisibleCharacter;
+ set => _firstVisibleCharacter = value;
+ }
+
+ int _maxVisibleCharacters = 0;
+ ///
+ /// Handles the very last character allowed to be visible in the text.
+ ///
+ ///
+ /// Be aware that in order to visible, a character also needs to also have its own "visible" flag set to true. See and
+ ///
+ public int maxVisibleCharacters
+ {
+ get => _maxVisibleCharacters;
+ set
+ {
+ if (_maxVisibleCharacters == value) return;
+
+ _maxVisibleCharacters = value;
+
+ //clamps value
+ if (_maxVisibleCharacters < 0)
+ _maxVisibleCharacters = 0;
+ }
+ }
+
+
+ #endregion
+
+
+ #region Animation
+ private void Update()
+ {
+ if(!IsReady()) return;
+
+ //--Easy Integration checks--
+ if(HasChangedText(textWithoutTextAnimTags))
+ {
+ if(typewriterStartsAutomatically && typewriter)
+ {
+ SetTypewriterText(GetOriginalTextFromSource());
+ return;
+ }
+
+ ConvertText(GetOriginalTextFromSource(), ShowTextMode.UserTyping);
+ return;
+ }
+
+ //--Animates in Core Loop--
+ if (animationLoop == AnimationLoop.Update)
+ Animate(timeScale == TimeScale.Unscaled ? Time.unscaledDeltaTime : Time.deltaTime);
+ }
+
+ void LateUpdate()
+ {
+ if (animationLoop == AnimationLoop.LateUpdate)
+ Animate(timeScale == TimeScale.Unscaled ? Time.unscaledDeltaTime : Time.deltaTime);
+ }
+
+ protected abstract bool IsReady();
+
+ ///
+ /// Proceeds the text animation with the given deltaTime value.
+ ///
+ ///
+ ///
+ /// You could use this if is set to and you want to control when to animate the text.
+ ///
+ public void Animate(float deltaTime)
+ {
+ if(!IsReady()) return;
+
+ if(requiresTagRefresh)
+ ConvertText(_text, ShowTextMode.Refresh);
+
+ time.UpdateDeltaTime(deltaTime);
+ time.IncreaseTime();
+
+ AnimateText();
+ }
+
+ #region Processing Regions
+
+ bool IsCharacterAppearing(int i) =>
+ i >= _firstVisibleCharacter && i < _maxVisibleCharacters && characters[i].isVisible;
+
+ void ProcessAnimationRegions(AnimationRegion[] regions)
+ {
+ foreach (var region in regions)
+ {
+ foreach (var range in region.ranges)
+ {
+ region.SetupContextFor(this, range.modifiers); //TODO index instead of passing modifier by value
+
+ for (int i = range.indexes.x; i < range.indexes.y && i < charactersCount; i++)
+ {
+ if(characters[i].passedTime<=0) continue;
+ if(!region.IsVisibilityPolicySatisfied(IsCharacterAppearing(i))) continue;
+
+ if(region.animation.CanApplyEffectTo(characters[i], this))
+ region.animation.ApplyEffectTo(ref characters[i], this);
+ }
+ }
+ }
+ }
+
+ #endregion
+
+ ///
+ /// Main loop
+ ///
+ void AnimateText()
+ {
+ //no text, skips
+ if (!hasText) return;
+
+ TryInitializing(); //called here as well since this might be called from outside
+
+ //Prepare characters
+ for(int i = 0; i < charactersCount && icharacters[i].info.disappearancesMaxDuration)
+ characters[i].passedTime = characters[i].info.disappearancesMaxDuration;
+ else
+ characters[i].passedTime -= time.deltaTime;
+
+ if (characters[i].passedTime <= 0) // "<=" to force hiding characters when TimeScale = 0
+ {
+ characters[i].passedTime = 0;
+ characters[i].Hide();
+ }
+ }
+ }
+
+ UpdateUniformIntensity();
+
+ //Processes animations
+ //PS Order is important
+ if (isAnimatingBehaviors && settings.behaviors.enabled)
+ {
+ ProcessAnimationRegions(behaviors);
+ }
+
+ if (isAnimatingAppearances && settings.appearances.enabled)
+ {
+ ProcessAnimationRegions(appearances);
+ ProcessAnimationRegions(disappearances);
+ }
+
+ //updates source
+ PasteMeshToSource(characters);
+
+ //checks for changes in the setting
+ if (requiresMeshUpdate || HasChangedRenderingSettings())
+ {
+ ForceMeshUpdate();
+ CopyMeshFromSource(ref characters);
+ }
+ }
+
+ #endregion
+
+ ///
+ /// Schedules that a mesh refresh is required as soon as possible, which will be applied before the next animation loop starts.
+ ///
+ public void ScheduleMeshRefresh() => requiresMeshUpdate = true;
+ public void ForceDatabaseRefresh()
+ {
+ if(DatabaseActions) DatabaseActions.ForceBuildRefresh();
+ if(DatabaseAppearances) DatabaseAppearances.ForceBuildRefresh();
+ if(DatabaseBehaviors) DatabaseBehaviors.ForceBuildRefresh();
+
+ ConvertText(GetOriginalTextFromSource(), ShowTextMode.Refresh);
+ }
+
+ ///
+ /// Enables or disables behavior effects animation *LOCALLY* on this Text Animator component.
+ /// To change this globally, see
+ ///
+ ///
+ public void SetBehaviorsActive(bool isCategoryEnabled) => isAnimatingBehaviors = isCategoryEnabled;
+
+ ///
+ /// Enables or disables appearance effects animation *LOCALLY* on this Text Animator component.
+ /// To change this globally, see
+ ///
+ ///
+ public void SetAppearancesActive(bool isCategoryEnabled) => isAnimatingAppearances = isCategoryEnabled;
+
+ #region Callbacks
+
+ protected virtual void OnEnable() // things might have changed when disabled, e.g. autoSize etc.
+ {
+ requiresMeshUpdate = true;
+ AnimateText();
+ }
+ #endregion
+
+ public void ResetState()
+ {
+ _text = string.Empty;
+ textWithoutTextAnimTags = string.Empty;
+ textWithoutAnyTag = string.Empty;
+ charactersCount = 0;
+ wordsCount = 0;
+ initialized = false;
+ TryInitializing();
+ }
+
+
+
+ #region Obsolete
+ // Just for compatibility with older versions
+
+ [Obsolete("Use TextAnimatorSettings.SetAllEffectsActive instead")]
+ public static void EnableAllEffects(bool enabled) => TextAnimatorSettings.SetAllEffectsActive(enabled);
+
+ [Obsolete("Use TextAnimatorSettings.SetAppearancesActive instead")]
+ public static void EnableAppearances(bool enabled) => TextAnimatorSettings.SetAppearancesActive(enabled);
+
+ [Obsolete("Use TextAnimatorSettings.SetBehaviorsActive instead")]
+ public static void EnableBehaviors(bool enabled) => TextAnimatorSettings.SetBehaviorsActive(enabled);
+
+
+ [Obsolete("Use SetAppearancesActive instead")]
+ public void EnableAppearancesLocally(bool value) => SetAppearancesActive(value);
+
+ [Obsolete("Use SetBehaviorsActive instead")]
+ public void EnableBehaviorsLocally(bool value) => SetBehaviorsActive(value);
+
+
+ ///
+ /// Turns all characters visible at the end of the frame (i.e. "a typewriter skip")
+ ///
+ /// Set this to true if you want all letters to appear instantly (without any appearance effect)
+ [System.Obsolete("Use SetVisibilityEntireText instead")]
+ public void ShowAllCharacters(bool skipAppearanceEffects) => SetVisibilityEntireText(true, skipAppearanceEffects);
+
+ [System.Obsolete("Use 'Animate' instead.")]
+ public void UpdateEffects() => Animate(timeScale == TimeScale.Unscaled ? Time.unscaledDeltaTime : Time.deltaTime);
+
+ [System.Obsolete("Events are not tied to TextAnimators anymore, but to their Typewriters. Please invoke 'TriggerRemainingEvents' on the Typewriter component instead.")]
+ public void TriggerRemainingEvents()
+ {
+ if(typewriter) typewriter.TriggerRemainingEvents();
+ }
+
+ [System.Obsolete(
+ "Events are not tied to TextAnimators anymore, but to their related typewriters. Please invoke 'TriggerVisibleEvents' on the Typewriter component instead.")]
+ public void TriggerVisibleEvents()
+ {
+ if(typewriter) typewriter.TriggerVisibleEvents();
+ }
+
+ [System.Obsolete("Use 'ScheduleMeshRefresh' instead")]
+ public void ForceMeshRefresh() => ScheduleMeshRefresh();
+
+
+ [System.Obsolete("To restart TextAnimator's time, please use 'time.RestartTime()'. To skip appearances effects please set 'SetVisibilityEntireText(true, false)' instead")]
+ public void ResetEffectsTime(bool skipAppearances)
+ {
+ time.RestartTime();
+
+ if(skipAppearances) SetVisibilityEntireText(true, false);
+ }
+
+ [System.Obsolete("Please use 'isResettingTimeOnNewText' instead")]
+ public bool isResettingEffectsOnNewText => isResettingTimeOnNewText;
+
+ [System.Obsolete("Please use 'animationLoop' instead")]
+ public AnimationLoop updateMode => animationLoop;
+
+ [System.Obsolete("Events are now handled/stored by Typewriters instead.")]
+ public MessageEvent onEvent => typewriter.onMessage;
+
+ [System.Obsolete("Please use TextAnimatorSettings.Instance.appearances.enabled instead")]
+ public static bool effectsAppearancesEnabled => TextAnimatorSettings.Instance.appearances.enabled;
+
+ [System.Obsolete("Please use TextAnimatorSettings.Instance.behaviors.enabled instead")]
+ public static bool effectsBehaviorsEnabled => TextAnimatorSettings.Instance.behaviors.enabled;
+
+ [System.Obsolete("Please use 'textFull' instead")]
+ public string text => textFull;
+
+ [System.Obsolete("Please change 'referenceFontSize' instead")]
+ public float effectIntensityMultiplier
+ {
+ get => referenceFontSize;
+ set => referenceFontSize = value;
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs.meta
new file mode 100644
index 0000000..4fbeb25
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1ef08882d835b14448c3919401c5a566
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs
new file mode 100644
index 0000000..8868002
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs
@@ -0,0 +1,35 @@
+namespace Febucci.UI
+{
+ ///
+ /// Contains TextAnimator's current time values.
+ ///
+ [System.Serializable]
+ public struct TimeData
+ {
+ ///
+ /// Time passed since the textAnimator started showing the very first letter
+ ///
+ public float timeSinceStart { get; private set; }
+
+ ///
+ /// TextAnimator's Component delta time, could be Scaled or Unscaled
+ ///
+ public float deltaTime { get; private set; }
+
+ public void RestartTime()
+ {
+ timeSinceStart = 0;
+ }
+
+ internal void IncreaseTime() => timeSinceStart += deltaTime;
+
+ internal void UpdateDeltaTime(float deltaTime)
+ {
+ this.deltaTime = deltaTime;
+
+ //To avoid possible desync errors etc., effects can't be played backwards.
+ if (deltaTime < 0)
+ deltaTime = 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs.meta
new file mode 100644
index 0000000..a68662d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7d512b128eb34fbbbfb3d7ddd5a07900
+timeCreated: 1672434698
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs
new file mode 100644
index 0000000..03867cb
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs
@@ -0,0 +1,11 @@
+namespace Febucci.UI
+{
+ ///
+ /// TextAnimator's effects time scale, which could match unity's Time.deltaTime or Time.unscaledDeltaTime
+ ///
+ public enum TimeScale
+ {
+ Scaled,
+ Unscaled,
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs.meta
new file mode 100644
index 0000000..aaa5b99
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7750818052bf43bdbdf9cf58aecedb0e
+timeCreated: 1672434664
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter.meta
new file mode 100644
index 0000000..da8aff2
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 11c8bab48f67f694281dd60b75bd1e39
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in.meta
new file mode 100644
index 0000000..df5be13
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ebf5cc3c746f24542ba634e1b83b8b9b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs
new file mode 100644
index 0000000..4adbbf6
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs
@@ -0,0 +1,86 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI
+{
+ ///
+ /// Built-in typewriter, which shows letters dynamically character after character.
+ /// To enable it, add this component near a one
+ /// - Base class:
+ /// - Manual: TextAnimatorPlayers
+ ///
+ [HelpURL("https://www.febucci.com/text-animator-unity/docs/typewriters/")]
+ [AddComponentMenu("Febucci/TextAnimator/Typewriter - By Character")]
+ public class TypewriterByCharacter : Core.TypewriterCore
+ {
+ [SerializeField, Attributes.CharsDisplayTime, Tooltip("Wait time for normal letters")] public float waitForNormalChars = .03f;
+ [SerializeField, Attributes.CharsDisplayTime, Tooltip("Wait time for ! ? .")] public float waitLong = .6f;
+ [SerializeField, Attributes.CharsDisplayTime, Tooltip("Wait time for ; : ) - ,")] public float waitMiddle = .2f;
+ [SerializeField, Tooltip("-True: only the last punctuaction on a sequence waits for its category time.\n-False: each punctuaction will wait, regardless if it's in a sequence or not")] public bool avoidMultiplePunctuactionWait = false;
+
+ [SerializeField, Tooltip("True if you want the typewriter to wait for new line characters")] public bool waitForNewLines = true;
+
+ [SerializeField, Tooltip("True if you want the typewriter to wait for all characters, false if you want to skip waiting for the last one")] public bool waitForLastCharacter = true;
+
+ [SerializeField, Tooltip("True if you want to use the same typewriter's wait times for the disappearance progression, false if you want to use a different wait time")] public bool useTypewriterWaitForDisappearances = true;
+ [SerializeField, Attributes.CharsDisplayTime, Tooltip("Wait time for characters in the disappearance progression")] float disappearanceWaitTime = .015f;
+ [SerializeField, Attributes.MinValue(0.1f), Tooltip("How much faster/slower is the disappearance progression compared to the typewriter's typing speed")] public float disappearanceSpeedMultiplier = 1;
+
+ protected override float GetWaitAppearanceTimeOf(int charIndex)
+ {
+ char character = TextAnimator.Characters[charIndex].info.character;
+
+ //avoids waiting for the last character
+ if (!waitForLastCharacter && TextAnimator.allLettersShown)
+ return 0;
+
+ //avoids waiting for multiple times if there are puntuactions near each other
+ if (avoidMultiplePunctuactionWait && char.IsPunctuation(character)) //curr char is punctuation
+ {
+ //next char is punctuation too, so skips this one
+ if (charIndex < TextAnimator.CharactersCount - 1
+ && char.IsPunctuation(TextAnimator.Characters[charIndex + 1].info
+ .character))
+ {
+ return waitForNormalChars;
+ }
+ }
+
+ //avoids waiting for new lines
+ if (!waitForNewLines && !TextAnimator.latestCharacterShown.info.isRendered)
+ {
+ bool IsUnicodeNewLine(ulong unicode) //Returns true if the unicode value represents a new line
+ {
+ return unicode == 10 || unicode == 13;
+ }
+
+ //skips waiting for a new line
+ if (IsUnicodeNewLine(System.Convert.ToUInt64(TextAnimator.latestCharacterShown.info.character)))
+ return 0; //TODO test
+ }
+
+ //character is not before another punctuaction
+ switch (character)
+ {
+ case ';':
+ case ':':
+ case ')':
+ case '-':
+ case ',': return waitMiddle;
+
+ case '!':
+ case '?':
+ case '.':
+ return waitLong;
+ }
+
+ return waitForNormalChars;
+
+ }
+
+ protected override float GetWaitDisappearanceTimeOf(int charIndex)
+ {
+ return useTypewriterWaitForDisappearances ? GetWaitAppearanceTimeOf(charIndex) * (1/disappearanceSpeedMultiplier) : disappearanceWaitTime;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs.meta
new file mode 100644
index 0000000..5ed860d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 57a6945b90dcd0c4b81619c0d8b5c283
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs
new file mode 100644
index 0000000..5fc2add
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs
@@ -0,0 +1,49 @@
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Febucci.UI
+{
+ ///
+ /// Built-in typewriter, which shows letters dynamically word after word.
+ /// To enable it, add this component near a one
+ /// - Base class:
+ /// - Manual: TextAnimatorPlayers
+ ///
+ [HelpURL("https://www.febucci.com/text-animator-unity/docs/typewriters/")]
+ [AddComponentMenu("Febucci/TextAnimator/Typewriter - By Word")]
+ public class TypewriterByWord: Core.TypewriterCore
+ {
+ [SerializeField, Attributes.CharsDisplayTime] public float waitForNormalWord = 0.3f;
+ [FormerlySerializedAs("waitForWordWithPuntuaction")] [SerializeField, Attributes.CharsDisplayTime] public float waitForWordWithPunctuation = 0.5f;
+ [SerializeField, Attributes.CharsDisplayTime] public float disappearanceDelay = 0.5f;
+
+ bool IsCharInsideAnyWord(int charIndex)
+ {
+ return TextAnimator.Characters[charIndex].wordIndex >= 0;
+ }
+
+ protected override float GetWaitAppearanceTimeOf(int charIndex)
+ {
+ if (!IsCharInsideAnyWord(charIndex) && TextAnimator.latestCharacterShown.index>0)
+ {
+ int latestWordShownIndex = TextAnimator.Characters[TextAnimator.latestCharacterShown.index-1].wordIndex;
+ if (latestWordShownIndex >= 0 && latestWordShownIndex < TextAnimator.WordsCount)
+ {
+ var word = TextAnimator.Words[latestWordShownIndex];
+ return char.IsPunctuation(TextAnimator.Characters[word.lastCharacterIndex].info.character)
+ ? waitForWordWithPunctuation
+ : waitForNormalWord;
+ }
+
+ return waitForNormalWord;
+ }
+
+ return 0;
+ }
+
+ protected override float GetWaitDisappearanceTimeOf(int charIndex)
+ {
+ return !IsCharInsideAnyWord(charIndex) ? disappearanceDelay : 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs.meta
new file mode 100644
index 0000000..a0db774
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: eb821b3a89e0240aa91c53955ccade89
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core.meta
new file mode 100644
index 0000000..e3cc056
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 56405348257d5434abae725e56e3ff2e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs
new file mode 100644
index 0000000..71529e7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs
@@ -0,0 +1,7 @@
+using UnityEngine.Events;
+
+namespace Febucci.UI.Core
+{
+ [System.Serializable]
+ public class CharacterEvent : UnityEvent { }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs.meta
new file mode 100644
index 0000000..8287bdb
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a35872b2f367498cb45631f5e243278e
+timeCreated: 1679673138
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs
new file mode 100644
index 0000000..e5319d8
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs
@@ -0,0 +1,8 @@
+using Febucci.UI.Core.Parsing;
+using UnityEngine.Events;
+
+namespace Febucci.UI.Core
+{
+ [System.Serializable]
+ public class MessageEvent : UnityEvent { }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs.meta
new file mode 100644
index 0000000..2aa5d54
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 84fd57f550b545b2a6ad379e4d4ea3b9
+timeCreated: 1679673142
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs
new file mode 100644
index 0000000..2a06771
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs
@@ -0,0 +1,624 @@
+using System.Collections;
+using System.Collections.Generic;
+using Febucci.UI.Core.Parsing;
+using UnityEngine;
+using UnityEngine.Events;
+
+namespace Febucci.UI.Core
+{
+ ///
+ /// Base class for all Typewriters.
+ /// - Manual: Typewriters.
+ ///
+ ///
+ /// If you want to use the built-in Typewriter, see: or
+ ///
+ /// You can also create custom typewriters by inheriting from this class.
+ /// Manual: Writing Custom Typewriters (C#)
+ ///
+ [DisallowMultipleComponent]
+ [RequireComponent(typeof(Core.TAnimCore))]
+ public abstract class TypewriterCore : MonoBehaviour
+ {
+ [System.Flags]
+ public enum StartTypewriterMode
+ {
+ ///
+ /// Typewriter starts typing ONLY if you invoke "StartShowingText" from any of your script.
+ ///
+ FromScriptOnly = 0,
+
+ ///
+ /// Typewriter automatically starts/resumes from the "OnEnable" method
+ ///
+ OnEnable = 1,
+
+ ///
+ /// Typewriter automatically starts once you call "ShowText" method [includes Easy Integration]
+ ///
+ OnShowText = 2,
+
+ AutomaticallyFromAllEvents = OnEnable | OnShowText //legacy support for unity 2018.x [instead of automatic recognition in 2019+]
+ }
+
+ #region Variables
+
+ #region Management Variables
+
+ TAnimCore _textAnimator;
+
+ ///
+ /// The TextAnimator Component linked to this typewriter
+ ///
+ public TAnimCore TextAnimator
+ {
+ get
+ {
+ if (_textAnimator != null)
+ return _textAnimator;
+
+#if UNITY_2019_2_OR_NEWER
+ if(!TryGetComponent(out _textAnimator))
+ {
+ Debug.LogError($"TextAnimator: Text Animator component is null on GameObject {gameObject.name}. Please add a component that inherits from TAnimCore");
+ }
+#else
+ _textAnimator = GetComponent();
+ Assert.IsNotNull(_textAnimator, $"Text Animator Component component is null on GameObject {gameObject.name}. Please add a component that inherits from TAnimCore");
+#endif
+
+ return _textAnimator;
+ }
+ }
+
+ #endregion
+
+ #region Typewriter settings
+ ///
+ /// true if the typewriter is enabled
+ ///
+ [Tooltip("True if you want to shows the text dynamically")]
+ [SerializeField] public bool useTypeWriter = true;
+
+ [SerializeField, Tooltip("Controls from which method(s) the typewriter will automatically start/resume. Default is 'Automatic'")]
+ public StartTypewriterMode startTypewriterMode = StartTypewriterMode.AutomaticallyFromAllEvents;
+
+ #region Typewriter Skip
+ [SerializeField]
+ bool hideAppearancesOnSkip = false;
+ [SerializeField, Tooltip("True = plays all remaining events once the typewriter has been skipped")]
+ bool triggerEventsOnSkip = false;
+ #endregion
+
+
+ [SerializeField, Tooltip("True = resets the typewriter speed every time a new text is set/shown")] public bool resetTypingSpeedAtStartup = true;
+
+ public enum DisappearanceOrientation
+ {
+ ///
+ /// Linear left to right (or right to left based on the text's direction)
+ ///
+ SameAsTypewriter = 0,
+
+ ///
+ /// Opposite direction of the typewriter
+ ///
+ Inverted = 1,
+
+ ///
+ /// Hides letters randomly from start to finish
+ ///
+ Random = 2,
+ }
+
+ [SerializeField] public DisappearanceOrientation disappearanceOrientation;
+
+ #endregion
+
+ #endregion
+
+ #region Events
+ ///
+ /// Called once the text is completely shown.
+ /// If the typewriter is enabled, this event is called once it has ended showing all letters.
+ ///
+ public UnityEvent onTextShowed = new UnityEvent();
+
+ ///
+ /// Called once the typewriter starts showing text.
+ ///
+ ///
+ /// It is only invoked when the typewriter is enabled.
+ ///
+ public UnityEvent onTypewriterStart = new UnityEvent();
+
+ ///
+ /// Called once the typewriter has completed hiding all the letters.
+ ///
+ ///
+ /// It is only invoked when the typewriter is enabled.
+ ///
+ public UnityEvent onTextDisappeared = new UnityEvent();
+
+ ///
+ /// Called once a character has been shown by the typewriter.
+ ///
+ ///
+ /// It is only invoked when the typewriter is enabled.
+ ///
+ public CharacterEvent onCharacterVisible = new CharacterEvent();
+
+
+ ///
+ /// Called once an event has been shown by the typewriter.
+ /// See the Events Manual for more info.
+ ///
+ ///
+ /// It is only invoked when the typewriter is enabled.
+ ///
+ public MessageEvent onMessage = new MessageEvent();
+ #endregion
+
+ #region Public Methods
+
+ ///
+ /// Sets the given text to the connected TextAnimator component.
+ /// If enabled, it also starts showing letters dynamically.
+ /// - Manual: Text Animator Players
+ ///
+ ///
+ ///
+ /// If the typewriter is enabled but its start mode doesn't include , this method won't start showing letters. You'd have to manually call in order to start the typewriter, or include different "start modes" like and let the script manage it automatically.
+ ///
+ public void ShowText(string text)
+ {
+ // --- SETS TEXT ---
+ if (string.IsNullOrEmpty(text))
+ {
+ TextAnimator.SetText(string.Empty, true);
+ return;
+ }
+
+ TextAnimator.SetText(text, useTypeWriter);
+ TextAnimator.firstVisibleCharacter = 0;
+
+ // --- TYPEWRITER ---
+ if (!useTypeWriter)
+ onTextShowed?.Invoke();
+ else if (startTypewriterMode.HasFlag(StartTypewriterMode.OnShowText))
+ StartShowingText(true);
+ }
+
+
+ ///
+ /// Skips the typewriter animation (if it's currently showing).
+ /// In case the text is revealing, it will show all the letters immediately.
+ /// In case the text is hiding, it will hide all the letters immediately.
+ ///
+ ///
+ /// If both revealing and hiding are occurring, hiding will prevail.
+ ///
+ public void SkipTypewriter()
+ {
+ if (isShowingText)
+ {
+ StopAllCoroutines();
+ isShowingText = false;
+
+ TextAnimator.SetVisibilityEntireText(true, !hideAppearancesOnSkip);
+
+ if (triggerEventsOnSkip)
+ {
+ TriggerEventsUntil(int.MaxValue);
+ }
+
+ onTextShowed?.Invoke();
+ }
+
+ //TODO is hiding
+
+ }
+
+
+ #region Typewriter
+
+ #region Appearing
+
+ ///
+ /// True if the typewriter is currently showing letters
+ ///
+ public bool isShowingText { get; private set; }
+
+ ///
+ /// Starts showing letters dynamically
+ ///
+ /// false
if you want the typewriter to resume where it has left. true
if the typewriter should restart from character 0
+ public void StartShowingText(bool restart = false)
+ {
+ if(TextAnimator.CharactersCount==0) return;
+
+ if (!useTypeWriter)
+ {
+ Debug.LogWarning("TextAnimator: couldn't start coroutine because 'useTypewriter' is disabled");
+ return;
+ }
+
+ if (isShowingText)
+ {
+ StopShowingText();
+ }
+
+ if (restart)
+ {
+ TextAnimator.SetVisibilityEntireText(false, false);
+ latestActionTriggered = 0;
+ latestEventTriggered = 0;
+ }
+
+ if (resetTypingSpeedAtStartup) internalSpeed = 1;
+ isShowingText = true;
+ showRoutine = StartCoroutine(ShowTextRoutine());
+ }
+
+ protected abstract float GetWaitAppearanceTimeOf(int charIndex);
+
+ Coroutine showRoutine;
+ Coroutine nestedActionRoutine;
+
+ float GetDeltaTime(TypingInfo typingInfo) => TextAnimator.time.deltaTime * internalSpeed * typingInfo.speed;
+ IEnumerator ShowTextRoutine()
+ {
+ isShowingText = true;
+
+ // --- INITIALIZATION ---
+ TypingInfo typingInfo = new TypingInfo();
+
+ // --- CALLBACKS ---
+ onTypewriterStart?.Invoke();
+
+ TextAnimatorSettings settings = TextAnimatorSettings.Instance;
+ bool actionsEnabled = settings && settings.actions.enabled;
+
+ // --- SHOWS TEXT LETTERS ---
+ for(int i=0;i= deltaTime) //waits only if we "surpassed" a frame duration
+ {
+ yield return null;
+ //saves remaining time to next frame as already waited time
+ typingInfo.timePassed %= deltaTime;
+ }
+ }
+ else
+ {
+ //waits until enough time has passed
+ while (typingInfo.timePassed < timeToWait)
+ {
+ typingInfo.timePassed += deltaTime;
+ yield return null;
+ deltaTime = GetDeltaTime(typingInfo);
+ }
+
+ typingInfo.timePassed %= timeToWait; //saves remaining time to next frame
+ }
+ }
+
+ // --- FINALIZATION ---
+ if (actionsEnabled)
+ {
+ for (int a = latestActionTriggered; a < TextAnimator.Actions.Length && TextAnimator.Actions[a].index
+ /// Stops showing letters dynamically, leaving the text as it is.
+ ///
+ public void StopShowingText()
+ {
+#if UNITY_EDITOR
+ if (!Application.isPlaying) //prevents from firing in edit mode from the context menu
+ return;
+#endif
+ if(!isShowingText) return;
+ isShowingText = false;
+
+ if(showRoutine!=null) StopCoroutine(showRoutine);
+ if(nestedActionRoutine!=null) StopCoroutine(nestedActionRoutine);
+ }
+
+ #endregion
+
+ #region Disappearing
+
+ ///
+ /// True if the typewriter is currently disappearing the text
+ ///
+ public bool isHidingText { get; private set; }
+
+ ///
+ /// Starts disappearing the text dynamically
+ ///
+ [ContextMenu("Start Disappearing Text")]
+ public void StartDisappearingText()
+ {
+ if (disappearanceOrientation == DisappearanceOrientation.Inverted && isShowingText)
+ {
+ Debug.LogWarning("TextAnimatorPlayer: Can't start disappearance routine in the opposite direction of the typewriter, because you're still showing the text! (the typewriter might get stuck trying to show and override letters that keep disappearing)");
+ return;
+ }
+
+ if(isHidingText) return;
+ hideRoutine = StartCoroutine(HideTextRoutine());
+ }
+
+ Coroutine hideRoutine;
+ Coroutine nestedHideRoutine;
+ ///
+ /// Stops the typewriter's from disappearing the text dynamically, leaving the text at its current state
+ ///
+ [ContextMenu("Stop Disappearing Text")]
+ public void StopDisappearingText()
+ {
+ if(!isHidingText) return;
+ isHidingText = false;
+
+ if(hideRoutine!=null)StopCoroutine(hideRoutine);
+ if(nestedHideRoutine!=null)StopCoroutine(nestedHideRoutine);
+ }
+
+ ///
+ /// Handles characters delay when disappearing text.
+ ///
+ /// Current character that should decide how much time to wait. Check to view its info
+ /// time to wait before disappearing the next character
+ protected virtual float GetWaitDisappearanceTimeOf(int charIndex) => GetWaitAppearanceTimeOf(charIndex);
+
+ static int[] ShuffleArray(int[] array)
+ {
+ var rng = new System.Random();
+ var n = array.Length;
+ while (n > 1)
+ {
+ var k = rng.Next(n--);
+ (array[n], array[k]) = (array[k], array[n]);
+ }
+
+ return array;
+ }
+
+ IEnumerator HideTextRoutine()
+ {
+ isHidingText = true;
+
+ // --- INITIALIZATION ---
+ TypingInfo typingInfo = new TypingInfo();
+
+ // Chooses the order in which the letters will disappear
+ int[] indexes = new int[TextAnimator.CharactersCount];
+ switch (disappearanceOrientation)
+ {
+ default:
+ case DisappearanceOrientation.SameAsTypewriter: //disappears from the end
+ for (int i = 0; i < TextAnimator.CharactersCount; i++) indexes[i] = i;
+ break;
+ case DisappearanceOrientation.Inverted:
+ for (int i = 0; i < TextAnimator.CharactersCount; i++) indexes[i] = TextAnimator.CharactersCount - i - 1;
+ break;
+
+ case DisappearanceOrientation.Random:
+ for (int i = 0; i < TextAnimator.CharactersCount; i++) indexes[i] = i;
+ indexes = ShuffleArray(indexes);
+ break;
+ }
+
+ // --- CALLBACKS ---
+
+ // --- HIDES TEXT ---
+ for (int i = 0; i < TextAnimator.CharactersCount; i++)
+ {
+ int indexToHide = indexes[i];
+ if(!TextAnimator.Characters[indexToHide].isVisible) continue;
+
+ TextAnimator.SetVisibilityChar(indexToHide, false);
+ float timeToWait = GetWaitDisappearanceTimeOf(indexToHide);
+
+ // -- WAITS TIME -- (identical to ShowTextRoutine, in order to skip frames correctly)
+ float deltaTime = GetDeltaTime(typingInfo);
+ if (timeToWait < 0) timeToWait = 0;
+ if (timeToWait < deltaTime) //waiting less time than a frame, we don't wait yet
+ {
+ typingInfo.timePassed += timeToWait;
+ if (typingInfo.timePassed >= deltaTime) //waits only if we "surpassed" a frame duration
+ {
+ yield return null;
+ //saves remaining time to next frame as already waited time
+ typingInfo.timePassed %= deltaTime;
+ }
+ }
+ else
+ {
+ //waits until enough time has passed
+ while (typingInfo.timePassed < timeToWait)
+ {
+ typingInfo.timePassed += deltaTime;
+ yield return null;
+ deltaTime = GetDeltaTime(typingInfo);
+ }
+
+ typingInfo.timePassed %= timeToWait; //saves remaining time to next frame
+ }
+ }
+
+ // --- CALLBACKS ---
+ onTextDisappeared?.Invoke();
+ isHidingText = false;
+ }
+
+ #endregion
+
+ ///
+ /// Makes the typewriter slower/faster, by setting its internal speed multiplier.
+ ///
+ ///
+ ///
+ /// If the typewriter has to wait 1 second to show the next letter but you set the typewriter speed to 2, the typewriter will wait 0.5 seconds.
+ ///
+ ///
+ /// The minimum value is 0.001
+ ///
+ public void SetTypewriterSpeed(float value)
+ {
+ internalSpeed = Mathf.Clamp(value, .001f, value);
+ }
+
+ #endregion
+
+ #endregion
+
+
+ #region Utilties
+
+ float internalSpeed = 1;
+
+ #region Actions and Events
+
+ int latestActionTriggered = 0;
+ int latestEventTriggered = 0;
+
+ void TriggerEventsBeforeAction(int maxIndex, ActionMarker action)
+ {
+ for (int i = latestEventTriggered; i < TextAnimator.Events.Length && TextAnimator.Events[i].index
+ /// Triggers all messages/events that have not yet been triggered, even if they're not shown in the yet.
+ ///
+ ///
+ ///
+ ///
+ public void TriggerRemainingEvents() => TriggerEventsUntil(int.MaxValue);
+
+ ///
+ /// Triggers all messages/events that have not been triggered, but that are in the visible range of the text.
+ ///
+ ///
+ ///
+ ///
+ public void TriggerVisibleEvents() => TriggerEventsUntil(TextAnimator.latestCharacterShown.index);
+ #endregion
+
+ #endregion
+
+
+ ///
+ /// Unity's default MonoBehavior 'OnEnable' callback.
+ ///
+ ///
+ /// P.S. If you're overriding this method, don't forget to invoke the base one.
+ ///
+ protected virtual void OnEnable()
+ {
+ if (!useTypeWriter)
+ return;
+
+ if (!startTypewriterMode.HasFlag(StartTypewriterMode.OnEnable))
+ return;
+
+ StartShowingText();
+ }
+
+ ///
+ /// Unity's default MonoBehavior 'OnDisable' callback.
+ ///
+ ///
+ /// P.S. If you're overriding this method, don't forget to invoke the base one.
+ ///
+ protected virtual void OnDisable()
+ {
+ // for backwards compatibility
+ }
+
+ #region Obsolete
+
+ [System.Obsolete("Please set the speed through 'SetTypewriterSpeed' method instead")]
+ protected float typewriterPlayerSpeed
+ {
+ get => internalSpeed;
+ set => SetTypewriterSpeed(value);
+ }
+
+ [System.Obsolete("Please skip the typewriter via the 'SkipTypewriter' method instead")]
+ protected bool wantsToSkip
+ {
+ get => throw new System.NotImplementedException();
+ set
+ {
+ if(value) SkipTypewriter();
+ }
+ }
+
+ [System.Obsolete("Please use 'isShowingText' instead")]
+ protected bool isBaseInsideRoutine => isShowingText;
+
+
+ [System.Obsolete("Please use 'TextAnimator' instead")]
+ public TAnimCore textAnimator => TextAnimator;
+
+ #endregion
+
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs.meta
new file mode 100644
index 0000000..d42cae2
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ac6b0a2b8ddbab342ad54b5409ccffec
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs
new file mode 100644
index 0000000..7634772
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs
@@ -0,0 +1,18 @@
+namespace Febucci.UI.Core
+{
+ ///
+ /// A way to store information about the typing progress between coroutines,
+ /// also allowing to keep track of time between frames and characters/words showed
+ ///
+ public class TypingInfo
+ {
+ public float speed = 1;
+ public float timePassed { get; internal set; } = 0;
+
+ public TypingInfo()
+ {
+ this.speed = 1;
+ this.timePassed = 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs.meta
new file mode 100644
index 0000000..47f4f8d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 116f934309cb4a4fa084190dac6083f4
+timeCreated: 1679673152
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef
new file mode 100644
index 0000000..928a28b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef
@@ -0,0 +1,16 @@
+{
+ "name": "Febucci.TextAnimator.Runtime",
+ "rootNamespace": "",
+ "references": [
+ "GUID:448b0b55421917e4784a8f2f7449081f"
+ ],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef.meta
new file mode 100644
index 0000000..86c6ef3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1e113d3b5d77bc04eab508251483e8ff
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing.meta
new file mode 100644
index 0000000..01481e2
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b82ca89fa6e4443c184b6c6a988ce125
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers.meta
new file mode 100644
index 0000000..4ccee7b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bae97d779d1a5423bbb8446fc2e88fc6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions.meta
new file mode 100644
index 0000000..565b724
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1ba7e1fc9cc234e52bea0b6e3765e563
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs
new file mode 100644
index 0000000..14345f0
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs
@@ -0,0 +1,11 @@
+using Febucci.UI.Core;
+
+namespace Febucci.UI.Actions
+{
+ [System.Serializable]
+ [UnityEngine.CreateAssetMenu(fileName = "ActionDatabase", menuName = "Text Animator/Actions/Create Actions Database", order = 100)]
+ public class ActionDatabase : Core.Database
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs.meta
new file mode 100644
index 0000000..1f2cb2b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 975089f62a0f141b0b6c1e96bb49c873
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs
new file mode 100644
index 0000000..9834e69
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs
@@ -0,0 +1,10 @@
+namespace Febucci.UI.Core.Parsing
+{
+ ///
+ /// Contains information about an action tag in text.
+ ///
+ public sealed class ActionMarker : MarkerBase
+ {
+ public ActionMarker(string name, int index, int internalOrder, string[] parameters) : base(name, index, internalOrder, parameters) { }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs.meta
new file mode 100644
index 0000000..53655c3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 88dd2b2ee4cae41c1ab322d46fc27c51
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs
new file mode 100644
index 0000000..4de3d2d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs
@@ -0,0 +1,62 @@
+using System.Text;
+using Febucci.UI.Actions;
+
+namespace Febucci.UI.Core.Parsing
+{
+ public sealed class ActionParser : TagParserBase
+ {
+ public ActionDatabase database;
+
+ //--- RESULTS ---
+ ActionMarker[] _results;
+ public ActionMarker[] results => _results; //TODO cache
+
+ public ActionParser(char startSymbol, char closingSymbol, char endSymbol, ActionDatabase actionDatabase)
+ : base(startSymbol, closingSymbol, endSymbol)
+ {
+ this.database = actionDatabase;
+ }
+
+ protected override void OnInitialize()
+ {
+ base.OnInitialize();
+ _results = new ActionMarker[0];
+ if(database) database.BuildOnce();
+ }
+
+ public override bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder)
+ {
+ if (!database)
+ return false;
+
+ database.BuildOnce();
+ //gets the name of the action from the tag
+ //if there's an equal sign, it means there are parameters
+ int equalIndex = textInsideBrackets.IndexOf('=');
+ string actionName = equalIndex == -1 ? textInsideBrackets : textInsideBrackets.Substring(0, equalIndex);
+ actionName = actionName.ToLower(); //action names are case insensitive
+
+ if (!database.ContainsKey(actionName)) return false; //skips unrecognized tags
+
+ //Creates a new action
+ ActionMarker textAction;
+
+ //If the action has parameters
+ if(equalIndex != -1)
+ {
+ string parameters = textInsideBrackets.Substring(equalIndex + 1);
+ textAction = new ActionMarker(actionName, realTextIndex, internalOrder, parameters.Replace(" ", "").Split(','));
+ }
+ else
+ {
+ textAction = new ActionMarker(actionName, realTextIndex, internalOrder, new string[0]);
+ }
+
+ //adds action to results
+ System.Array.Resize(ref _results, _results.Length + 1);
+ _results[_results.Length - 1] = textAction;
+
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs.meta
new file mode 100644
index 0000000..0d9e061
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4b6593795a37f4d9ea045b10d92ce442
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events.meta
new file mode 100644
index 0000000..56ce640
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e4267f6f185ce4a81aa5e74e70e8696e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs
new file mode 100644
index 0000000..c16c625
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs
@@ -0,0 +1,10 @@
+namespace Febucci.UI.Core.Parsing
+{
+ ///
+ /// Contains information about an event called in text
+ ///
+ public class EventMarker : Parsing.MarkerBase
+ {
+ public EventMarker(string name, int index, int internalOrder, string[] parameters) : base(name, index, internalOrder, parameters) { }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs.meta
new file mode 100644
index 0000000..c03f528
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 07720fa0081784ae9aa4f33c20050078
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs
new file mode 100644
index 0000000..df32a26
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs
@@ -0,0 +1,52 @@
+using System.Text;
+
+namespace Febucci.UI.Core.Parsing
+{
+ public class EventParser : TagParserBase
+ {
+ const char eventSymbol = '?';
+
+ public EventParser(char openingBracket, char closingBracket, char closingTagSymbol)
+ : base(openingBracket, closingBracket, closingTagSymbol){ }
+
+ EventMarker[] _results;
+
+ public EventMarker[] results => _results;
+
+ protected override void OnInitialize()
+ {
+ base.OnInitialize();
+ _results = new EventMarker[0];
+ }
+
+ public override bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder)
+ {
+ //If the first character is not the event symbol, skips
+ if (textInsideBrackets[0] != eventSymbol)
+ return false;
+
+ //Creates a new event
+ EventMarker textEvent;
+
+ //If the event has parameters
+ int indexOfEquals = textInsideBrackets.IndexOf('=');
+ if(indexOfEquals != -1)
+ {
+ string eventName = textInsideBrackets.Substring(1, indexOfEquals - 1);
+ string parameters = textInsideBrackets.Substring(indexOfEquals + 1);
+
+ //TODO fast strip
+ textEvent = new EventMarker(eventName, realTextIndex, internalOrder, parameters.Replace(" ", "").Split(','));
+ }
+ else
+ {
+ textEvent = new EventMarker(textInsideBrackets.Substring(1), realTextIndex, internalOrder, new string[0]);
+ }
+
+ System.Array.Resize(ref _results, _results.Length + 1);
+ _results[_results.Length - 1] = textEvent;
+
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs.meta
new file mode 100644
index 0000000..bf44a41
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5992208bf6566454398999726c886d89
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core.meta
new file mode 100644
index 0000000..251bc72
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2971a97a3d8c14f359a2a9b5d9db390e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs
new file mode 100644
index 0000000..a420b03
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs
@@ -0,0 +1,47 @@
+namespace Febucci.UI.Core.Parsing
+{
+ public abstract class MarkerBase : System.IComparable
+ {
+ public readonly string name;
+ public readonly int index;
+ internal readonly int internalOrder;
+ public string[] parameters;
+
+ public MarkerBase(string name, int index, int internalOrder, string[] parameters)
+ {
+ this.name = name;
+ this.index = index;
+ this.internalOrder = internalOrder;
+ this.parameters = parameters;
+ }
+
+ ///
+ /// Checks if a marker is placed before another in text.
+ /// PS. Checks for internal order, since when a letter is shown (character index)
+ /// there might be multiple events happening
+ ///
+ ///
+ ///
+ public int CompareTo(MarkerBase other)
+ {
+ return internalOrder.CompareTo(other.internalOrder);
+ }
+
+ public override string ToString()
+ {
+ System.Text.StringBuilder sb = new System.Text.StringBuilder();
+ sb.Append(name);
+ sb.Append(" internal order:");
+ sb.Append(internalOrder);
+ sb.Append(" index:");
+ sb.Append(index);
+ sb.Append('\n');
+ for (int i = 0; i < parameters.Length; i++)
+ {
+ sb.Append(parameters[i]);
+ sb.Append('\n');
+ }
+ return sb.ToString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs.meta
new file mode 100644
index 0000000..ffcafe7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8b7eebc58c32445fd9af5a1b681b2266
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions.meta
new file mode 100644
index 0000000..6b8ded0
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5104e8d934da1497e8d56e84dcec2511
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations.meta
new file mode 100644
index 0000000..6c860d4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44576839baa2d4f7488e12a2f1ebbd1c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs
new file mode 100644
index 0000000..1d56d0a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs
@@ -0,0 +1,115 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Febucci.UI.Effects;
+
+namespace Febucci.UI.Core.Parsing
+{
+ ///
+ /// Rules how to parse a rich text tag that has an opening and ending
+ ///
+ public class AnimationParser : TagParserBase where T : AnimationScriptableBase
+ {
+ //--- DATABASE ---
+ public Database database;
+ VisibilityMode visibilityMode;
+ char middleSymbol;
+ const char middleSymbolDefault = '\n'; //this will never be set... right? right???
+
+ //--- CONSTRUCTORS ---
+ public AnimationParser(char startSymbol, char closingSymbol, char endSymbol, VisibilityMode visibilityMode, Database database) : base(startSymbol, closingSymbol, endSymbol)
+ {
+ this.visibilityMode = visibilityMode;
+ this.database = database;
+ this.middleSymbol = middleSymbolDefault;
+ }
+
+ public AnimationParser(char startSymbol, char closingSymbol, char middleSymbol, char endSymbol, VisibilityMode visibilityMode, Database database) : base(startSymbol, closingSymbol, endSymbol)
+ {
+ this.visibilityMode = visibilityMode;
+ this.database = database;
+ this.middleSymbol = middleSymbol;
+ }
+
+ //--- RESULTS ---
+ Dictionary _results;
+
+ public AnimationRegion[] results => _results.Values.ToArray(); //TODO cache
+
+ protected override void OnInitialize()
+ {
+ base.OnInitialize();
+
+ _results = new Dictionary();
+ if(database) database.BuildOnce();
+ }
+
+
+ public override bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder)
+ {
+ if (!database) return false;
+
+ textInsideBrackets = textInsideBrackets.ToLower(); //animations are case insensitive
+
+ //Makes sure the database is built
+ database.BuildOnce();
+
+ //If the first character is a closing symbol, then it's a closing tag
+ bool isClosing = textInsideBrackets[0] == closingSymbol;
+ //tries closing all previous regions if tag is /
+ if (isClosing && tagLength == 1)
+ {
+ foreach (var range in _results.Values)
+ {
+ range.CloseAllOpenedRanges(realTextIndex);
+ }
+ return true;
+ }
+
+ int tagStart = isClosing ? 1 : 0;
+
+ string fullTag = textInsideBrackets.Substring(tagStart);
+ string[] tempTagWords = fullTag.Split();
+ string tempTagName = tempTagWords[0];
+
+ //invalid closing tag, since there are modifiers
+ if (isClosing && tempTagWords.Length > 1)
+ return false;
+
+ //----CHECKS IF TAG IS RECOGNIZED----
+
+ //removes middle symbol if present
+ //so that it can also work with disappearance effects etc.
+ //e.g. {#shake}
+ //TODO tests for this
+ if (middleSymbol != middleSymbolDefault)
+ {
+ if(tempTagName[0] != middleSymbol) return false;
+ tempTagName = tempTagName.Substring(1);
+ }
+
+ if (!database.ContainsKey(tempTagName)) return false; //Skips unrecognized tags
+
+ //----ADDS RESULT----
+ if (isClosing)
+ {
+ if (_results.ContainsKey(tempTagName))
+ _results[tempTagName].TryClosingRange(realTextIndex);
+ }
+ else
+ {
+ //Creates new region if it doesn't exist yet
+ if (!_results.ContainsKey(tempTagName))
+ _results.Add(tempTagName, new AnimationRegion(tempTagName, visibilityMode, database[tempTagName]));
+
+ _results[tempTagName].OpenNewRange(realTextIndex, tempTagWords);
+ }
+
+ /*
+ Returns true nonetheless, since even if the tag might have not been processed correctly,
+ it's still a Text Animator tag that shouldn't appear in the final text
+ */
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs.meta
new file mode 100644
index 0000000..62ceb97
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8690f773b4aba40a9b72dad8937dd503
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs
new file mode 100644
index 0000000..efd595c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs
@@ -0,0 +1,122 @@
+using UnityEngine;
+using System.Text;
+using System;
+using Febucci.UI.Effects;
+
+namespace Febucci.UI.Core.Parsing
+{
+
+ [Flags]
+ public enum VisibilityMode
+ {
+ OnVisible = 1,
+ OnHiding = 2,
+ Persistent = OnVisible | OnHiding,
+ }
+
+ ///
+ /// Contains information of a region in the text
+ ///
+ public class AnimationRegion : RegionBase
+ {
+ readonly VisibilityMode visibilityMode;
+ public readonly AnimationScriptableBase animation;
+
+ public AnimationRegion(string tagId, VisibilityMode visibilityMode, AnimationScriptableBase animation) : base(tagId)
+ {
+ this.visibilityMode = visibilityMode;
+ this.animation = animation;
+ }
+
+ public bool IsVisibilityPolicySatisfied(bool visible) => visibilityMode == VisibilityMode.Persistent || visibilityMode.HasFlag(VisibilityMode.OnVisible) == visible;
+
+ #region Ranges
+
+
+ public void OpenNewRange(int startIndex) => OpenNewRange(startIndex, Array.Empty());
+
+ public void OpenNewRange(int startIndex, string[] tagWords)
+ {
+ Array.Resize(ref ranges, ranges.Length + 1);
+ TagRange range = new TagRange(new Vector2Int(startIndex, int.MaxValue));
+
+ //Adds modifiers
+ for (int i = 1; i < tagWords.Length; i++) //starts from 1 'cos skips tag name
+ {
+ string tag = tagWords[i];
+ int equalIndex = tag.IndexOf('=');
+ if (equalIndex <= 0) continue; //invalid modifier
+
+ if (FormatUtils.TryGetFloat(tag.Substring(equalIndex + 1), 0, out var result))
+ {
+ Array.Resize(ref range.modifiers, range.modifiers.Length + 1);
+ range.modifiers[range.modifiers.Length - 1] = new ModifierInfo(tag.Substring(0, equalIndex), result);
+ }
+ }
+
+ ranges[ranges.Length - 1] = range;
+ }
+
+ //TODO testing
+ public void TryClosingRange(int endIndex)
+ {
+ if (ranges.Length == 0) return; //no otherTag was opened before
+
+ for (int i = ranges.Length - 1; i >= 0; i--)
+ {
+ if (ranges[i].indexes.y != int.MaxValue) continue; // otherTag was already closed
+
+ var range = ranges[i];
+ range.indexes.y = endIndex;
+ ranges[i] = range;
+ break; //found a range to close
+ }
+ }
+
+ public void CloseAllOpenedRanges(int endIndex)
+ {
+ if (ranges.Length == 0) return; //no otherTag was opened before
+
+ for (int i = ranges.Length - 1; i >= 0; i--)
+ {
+ if (ranges[i].indexes.y != int.MaxValue) continue; // otherTag was already closed
+
+ var range = ranges[i];
+ range.indexes.y = endIndex;
+ ranges[i] = range;
+ }
+ }
+ #endregion
+
+ #region Animation
+
+ public virtual void SetupContextFor(TAnimCore animator, ModifierInfo[] modifiers)
+ {
+ animation.ResetContext(animator);
+
+ foreach(var mod in modifiers)
+ animation.SetModifier(mod);
+ }
+ #endregion
+
+ public override string ToString()
+ {
+ StringBuilder text = new StringBuilder();
+ text.Append("tag: ");
+ text.Append(tagId);
+ if (ranges.Length == 0) text.Append("\nNo ranges");
+ else
+ {
+ for (int i = 0; i < ranges.Length; i++)
+ {
+ text.Append('\n');
+ text.Append('-');
+ text.Append('-');
+ text.Append(ranges[i]);
+ }
+ }
+
+ return text.ToString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs.meta
new file mode 100644
index 0000000..63b6916
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1ff8e127f267378409a5cb9bdf7f2c10
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core.meta
new file mode 100644
index 0000000..9dcb929
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: da51d4014591a4119940f9647d5b6cf6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs
new file mode 100644
index 0000000..ce7105c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs
@@ -0,0 +1,21 @@
+using System;
+
+namespace Febucci.UI
+{
+ public struct ModifierInfo: IEquatable
+ {
+ public string name;
+ public float value;
+
+ public ModifierInfo(string name, float value)
+ {
+ this.name = name;
+ this.value = value;
+ }
+
+ public bool Equals(ModifierInfo other) => value.Equals(other.value) && name.Equals(other.name);
+
+ public override string ToString() => $"{name}={value}";
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs.meta
new file mode 100644
index 0000000..5340fb7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c67b17c620c357c48a6fa7c63135b03f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs
new file mode 100644
index 0000000..5d49315
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs
@@ -0,0 +1,33 @@
+using UnityEngine;
+using System;
+
+namespace Febucci.UI.Core.Parsing
+{
+ public abstract class RegionBase
+ {
+ public readonly string tagId;
+ public TagRange[] ranges;
+
+ public RegionBase(string tagId)
+ {
+ this.tagId = tagId;
+ ranges = Array.Empty();
+ }
+
+ public RegionBase(string tagId, params TagRange[] ranges)
+ {
+ this.tagId = tagId;
+ this.ranges = ranges;
+ }
+
+ public RegionBase(string tagId, params Vector2Int[] ranges)
+ {
+ this.tagId = tagId;
+ int len = tagId.Length + 2; //plus opening/closing symbols
+ this.ranges = new TagRange[ranges.Length];
+ for (int i = 0; i < this.ranges.Length; i++)
+ this.ranges[i] = new TagRange(ranges[i]);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs.meta
new file mode 100644
index 0000000..563c429
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3a3db40c7789a4b2e8f4b7c760c42d26
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs
new file mode 100644
index 0000000..4b345cf
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs
@@ -0,0 +1,41 @@
+using UnityEngine;
+using System.Text;
+
+namespace Febucci.UI.Core.Parsing
+{
+ public struct TagRange
+ {
+ ///
+ /// text index range of where to apply the tag
+ ///
+ public Vector2Int indexes;
+ public ModifierInfo[] modifiers;
+
+ public TagRange(Vector2Int indexes, params ModifierInfo[] modifiers)
+ {
+ this.indexes = indexes;
+ this.modifiers = modifiers;
+ }
+
+ public override string ToString()
+ {
+ StringBuilder text = new StringBuilder();
+
+ text.Append("indexes: ");
+ text.Append(indexes);
+ if (modifiers == null || modifiers.Length == 0)
+ text.Append("\n no modifiers");
+ else
+ {
+ for (int i = 0; i < modifiers.Length; i++)
+ {
+ text.Append('\n');
+ text.Append('-');
+ text.Append(modifiers[i]);
+ }
+ }
+ return text.ToString();
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs.meta
new file mode 100644
index 0000000..9e712ae
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bc9fe708cb635ad47bc864d6a4949899
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs
new file mode 100644
index 0000000..6d19bc2
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs
@@ -0,0 +1,119 @@
+using System.Text;
+
+namespace Febucci.UI.Core.Parsing
+{
+ ///
+ /// Handles text parsing and rich text tags recognition
+ ///
+ public static class TextParser
+ {
+ public static string ParseText(string text, params TagParserBase[] rules)
+ {
+ if(rules == null || rules.Length == 0)
+ {
+ UnityEngine.Debug.LogWarning("No rules were provided to parse the text. Skipping");
+ return text;
+ }
+
+ //PS At the moment, only for avoiding fails on domain reload
+ //and multiple tags on different text sets
+ foreach (var rule in rules)
+ {
+ rule.Initialize();
+ }
+
+ /*
+ P.S. Calculating tags etc. is done inside this single method (and not split for each rule etc.)
+ so that the text is only parsed once, and not multiple times for each rule - improving performance
+ */
+ StringBuilder result = new StringBuilder();
+
+ // create an array of character from text
+ var characters = text.ToCharArray();
+ int len = characters.Length;
+ bool foundTag;
+ string fullTag;
+ bool allowParsing = true;
+
+ //For every character in text
+ for(int textIndex = 0, realTextIndex = 0; textIndex < len; textIndex++)
+ {
+ foundTag = false;
+
+ //searches for noparse first
+ if (characters[textIndex] == '<')
+ {
+ int closeIndex = text.IndexOf('>', textIndex + 1);
+ if(closeIndex>0)
+ {
+ int tagLength = closeIndex - textIndex + 1;
+ void PasteTagToText()
+ {
+ foundTag = true;
+ result.Append(fullTag);
+ textIndex = closeIndex;
+ }
+
+ fullTag = text.Substring(textIndex, tagLength);
+ switch (fullTag.ToLower())
+ {
+ case "":
+ allowParsing = false;
+ PasteTagToText();
+ break;
+ case "":
+ allowParsing = true;
+ PasteTagToText();
+ break;
+ }
+ }
+ }
+
+ if (allowParsing && !foundTag)
+ {
+ foreach (var rule in rules) //tries rich tags
+ {
+ if (characters[textIndex] == rule.startSymbol)
+ {
+ for (int endIndex = textIndex + 1; endIndex < len && !foundTag; endIndex++)
+ {
+ //If there's an opening symbol, skips since it's a new tag
+ if (characters[endIndex] == rule.startSymbol)
+ break;
+
+ if (characters[endIndex] == rule.endSymbol)
+ {
+ // Gets the length of the tag
+ int tagLength = endIndex - textIndex - 1;
+
+ if (tagLength == 0) //Skips empty tag
+ break;
+
+ if (rule.TryProcessingTag(
+ text.Substring(textIndex + 1, tagLength),
+ tagLength,
+ ref realTextIndex,
+ result,
+ textIndex))
+ {
+ foundTag = true;
+ textIndex = endIndex; //Tag processed, skips others
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (!foundTag)
+ {
+ result.Append(characters[textIndex]);
+ realTextIndex++;
+ }
+ }
+
+ return result.ToString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs.meta
new file mode 100644
index 0000000..3bc89db
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 62b50d2f8435a44d5abcc3b0aec4daed
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core.meta
new file mode 100644
index 0000000..f89e84d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2e43be599da104e6bba973f670eecf31
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs
new file mode 100644
index 0000000..69e61b6
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs
@@ -0,0 +1,14 @@
+namespace Febucci.UI.Core
+{
+ public struct CharInfo
+ {
+ internal bool initialized;
+ public float disappearancesMaxDuration;
+ public float appearancesMaxDuration;
+
+ public float pointSize;
+
+ public char character; //TODO test
+ public bool isRendered;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs.meta
new file mode 100644
index 0000000..25488ae
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7317a03cd5fb4135ba38336b9ed9fd1c
+timeCreated: 1672437590
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs
new file mode 100644
index 0000000..6ac4250
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs
@@ -0,0 +1,60 @@
+using UnityEngine;
+
+namespace Febucci.UI.Core
+{
+ public struct CharacterData
+ {
+ public CharInfo info;
+
+ public int index;
+ public int wordIndex;
+ public bool isVisible;
+ public float passedTime;
+
+ public float uniformIntensity;
+
+ public MeshData source;
+ public MeshData current;
+
+ public void ResetInfo(int i)
+ {
+
+ index = i;
+ wordIndex = -1;
+ isVisible = true; //text is visible by default
+
+ //--Initializes first time only--
+ if (!info.initialized)
+ {
+ source.positions = new Vector3[Core.TextUtilities.verticesPerChar];
+ source.colors = new Color32[Core.TextUtilities.verticesPerChar];
+
+ current.positions = new Vector3[Core.TextUtilities.verticesPerChar];
+ current.colors = new Color32[Core.TextUtilities.verticesPerChar];
+ }
+
+ }
+
+ public void ResetAnimation()
+ {
+ for (int i = 0; i < source.positions.Length; i++)
+ {
+ current.positions[i] = source.positions[i];
+ current.colors[i] = source.colors[i];
+ }
+ }
+
+ public void Hide()
+ {
+ for (byte i = 0; i < source.positions.Length; i++)
+ {
+ current.positions[i] = Vector3.zero;
+ }
+ }
+
+ public void UpdateIntensity(float referenceFontSize)
+ {
+ uniformIntensity = info.pointSize / referenceFontSize;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs.meta
new file mode 100644
index 0000000..77b342e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 36a40ff9978cfb0458b260b57a2e84f7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs
new file mode 100644
index 0000000..1e75a06
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs
@@ -0,0 +1,119 @@
+using System.Collections.Generic;
+
+namespace Febucci.UI.Core
+{
+ ///
+ /// Caches information about tag providers, so that
+ /// it's easier to access them
+ ///
+ ///
+ [System.Serializable]
+ public class Database : UnityEngine.ScriptableObject where T : UnityEngine.ScriptableObject, ITagProvider
+ {
+ bool built;
+
+ void OnEnable()
+ {
+ //Prevents database from not refreshing on
+ //different domain reload settings
+ built = false;
+ }
+
+ [UnityEngine.SerializeField] System.Collections.Generic.List data = new List();
+ public System.Collections.Generic.List Data => data;
+
+ public void Add(T element)
+ {
+ if(data == null) data = new System.Collections.Generic.List();
+ data.Add(element);
+
+ // at runtime adds directly on database as well, without needing to rebuild
+ if (built && UnityEngine.Application.isPlaying)
+ {
+ string tag = element.TagID;
+ if (dictionary.ContainsKey(tag))
+ UnityEngine.Debug.LogError($"Text Animator: Tag {tag} is already present in the database. Skipping...");
+ else
+ dictionary.Add(tag, element);
+ }
+ else
+ {
+ built = false;
+ }
+ }
+
+ Dictionary dictionary;
+
+ public void ForceBuildRefresh()
+ {
+ built = false;
+ BuildOnce();
+ }
+
+ public void BuildOnce()
+ {
+ if(built) return;
+ built = true;
+
+ if(dictionary == null)
+ dictionary = new Dictionary();
+ else
+ dictionary.Clear();
+
+ string tagId;
+ foreach (var source in data)
+ {
+ if(!source)
+ continue;
+
+ tagId = source.TagID;
+
+ if (string.IsNullOrEmpty(tagId))
+ {
+ UnityEngine.Debug.LogError($"Text Animator: Tag is null or empty. Skipping...");
+ continue;
+ }
+
+ if (dictionary.ContainsKey(tagId))
+ {
+ UnityEngine.Debug.LogError($"Text Animator: Tag {tagId} is already present in the database. Skipping...");
+ continue;
+ }
+
+ dictionary.Add(tagId, source);
+ }
+
+ OnBuildOnce();
+ }
+
+ protected virtual void OnBuildOnce() { }
+
+ public bool ContainsKey(string key)
+ {
+ BuildOnce();
+ return dictionary.ContainsKey(key);
+ }
+
+ public T this[string key]
+ {
+ get
+ {
+ BuildOnce();
+ return dictionary[key];
+ }
+ }
+
+ public void DestroyImmediate(bool databaseOnly = false)
+ {
+ if (!databaseOnly)
+ {
+ foreach (var element in data)
+ {
+ UnityEngine.Object.DestroyImmediate(element);
+ }
+ }
+
+ UnityEngine.Object.DestroyImmediate(this);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs.meta
new file mode 100644
index 0000000..b57ae08
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ad15696ec142b4b74a18062348e0c8ee
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs
new file mode 100644
index 0000000..c9ca084
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs
@@ -0,0 +1,7 @@
+namespace Febucci.UI.Core
+{
+ public interface ITagProvider
+ {
+ string TagID { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs.meta
new file mode 100644
index 0000000..7d711d3
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 95954e1bd9a8247e485caea208576867
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs
new file mode 100644
index 0000000..7f45f07
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace Febucci.UI.Core
+{
+ public struct MeshData : System.IEquatable
+ {
+ public Vector3[] positions;
+ public Color32[] colors;
+
+
+ public bool Equals(MeshData other)
+ {
+ //checks every position with other's position
+ for (int i = 0; i < positions.Length; i++)
+ {
+ if (positions[i] != other.positions[i])
+ return false;
+ }
+
+ //checks every color with other's color
+ for (int i = 0; i < colors.Length; i++)
+ {
+ if (!colors[i].Equals(other.colors[i]))
+ return false;
+ }
+
+ return true;
+ }
+
+ public override string ToString()
+ {
+ System.Text.StringBuilder sb = new System.Text.StringBuilder();
+ //prints positions and colors
+ for (int i = 0; i < positions.Length; i++)
+ {
+ sb.Append(positions[i].ToString());
+ sb.Append(" ");
+ sb.Append(colors[i].ToString());
+ sb.Append(" - ");
+ }
+ return sb.ToString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs.meta
new file mode 100644
index 0000000..78581ae
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 36780d2b32e74616a2d854f1c8c2c242
+timeCreated: 1672437581
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs
new file mode 100644
index 0000000..ee5d394
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs
@@ -0,0 +1,29 @@
+using System.Text;
+
+namespace Febucci.UI.Core.Parsing
+{
+ ///
+ /// Base class to parse/process a rich text tag
+ ///
+ public abstract class TagParserBase
+ {
+ //--- SYMBOLS ---
+ public char startSymbol;
+ public char endSymbol;
+ public char closingSymbol; //TODO remove closing symbol to all, add it only to regions
+
+ public TagParserBase() { }
+ public TagParserBase(char startSymbol, char closingSymbol, char endSymbol)
+ {
+ this.startSymbol = startSymbol;
+ this.closingSymbol = closingSymbol;
+ this.endSymbol = endSymbol;
+ }
+
+ //--- METHODS ---
+ public abstract bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder);
+
+ public void Initialize() => OnInitialize();
+ protected virtual void OnInitialize(){ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs.meta
new file mode 100644
index 0000000..eddf9ef
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 55c7a4ae649c8407f8d95bf3403945ef
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs
new file mode 100644
index 0000000..1decfd5
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs
@@ -0,0 +1,16 @@
+namespace Febucci.UI.Core
+{
+ public struct WordInfo
+ {
+ public readonly int firstCharacterIndex;
+ public readonly int lastCharacterIndex;
+ public readonly string text;
+
+ public WordInfo(int firstCharacterIndex, int lastCharacterIndex, string text)
+ {
+ this.firstCharacterIndex = firstCharacterIndex;
+ this.lastCharacterIndex = lastCharacterIndex;
+ this.text = text;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs.meta
new file mode 100644
index 0000000..bfc3eec
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: ada8bd43a5c046838f7be64d1e3f7e3d
+timeCreated: 1679507564
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables.meta
new file mode 100644
index 0000000..5b32420
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c62ca3b12006dd046abe6a66e7f5c690
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions.meta
new file mode 100644
index 0000000..7239506
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 35d5f4998a2cc4d709e95a90ff304e6e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in.meta
new file mode 100644
index 0000000..92e515d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0af2dade929034a0ead991e371617b6c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs
new file mode 100644
index 0000000..7dfbfcf
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs
@@ -0,0 +1,29 @@
+using Febucci.UI.Core;
+using Febucci.UI.Core.Parsing;
+
+namespace Febucci.UI.Actions
+{
+ [System.Serializable]
+ [UnityEngine.CreateAssetMenu(fileName = "Speed Action", menuName = "Text Animator/Actions/Speed", order = 1)]
+ [TagInfo("speed")]
+ public sealed class SpeedAction : ActionScriptableBase
+ {
+ ///
+ /// Speed used in case the action does not have the first parameter
+ ///
+ [UnityEngine.Tooltip("Speed used in case the action does not have the first parameter")]
+ public float defaultSpeed = 2;
+
+ public override System.Collections.IEnumerator DoAction(ActionMarker action, TypewriterCore typewriter, TypingInfo typingInfo)
+ {
+ float speed = defaultSpeed;
+ if(action.parameters.Length > 0)
+ {
+ FormatUtils.TryGetFloat(action.parameters[0], defaultSpeed, out speed);
+ }
+
+ typingInfo.speed = speed;
+ yield break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs.meta
new file mode 100644
index 0000000..6b544ae
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 24451f867ad2a6146baf57f938a44d18
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs
new file mode 100644
index 0000000..3c6b330
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs
@@ -0,0 +1,18 @@
+using Febucci.UI.Core;
+using Febucci.UI.Core.Parsing;
+using UnityEngine;
+
+namespace Febucci.UI.Actions
+{
+ [System.Serializable]
+ [CreateAssetMenu(fileName = "WaitAnyInput Action", menuName = "Text Animator/Actions/Wait Any Input", order = 1)]
+ [TagInfo("waitinput")]
+ public sealed class WaitAnyInputAction : ActionScriptableBase
+ {
+ public override System.Collections.IEnumerator DoAction(ActionMarker action, TypewriterCore typewriter, TypingInfo typingInfo)
+ {
+ while(!Input.anyKeyDown)
+ yield return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs.meta
new file mode 100644
index 0000000..d4e1adb
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: aed6905e7c644c14a804ef32a5216aa3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs
new file mode 100644
index 0000000..194c23a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs
@@ -0,0 +1,33 @@
+using Febucci.UI.Core;
+using Febucci.UI.Core.Parsing;
+
+namespace Febucci.UI.Actions
+{
+ [System.Serializable]
+ [UnityEngine.CreateAssetMenu(fileName = "WaitFor Action", menuName = "Text Animator/Actions/Wait For", order = 1)]
+ [TagInfo("waitfor")]
+ public sealed class WaitForAction : ActionScriptableBase
+ {
+ ///
+ /// Time used in case the action does not have the first parameter
+ ///
+ [UnityEngine.Tooltip("Time used in case the action does not have the first parameter")]
+ public float defaultTime = 1;
+
+ public override System.Collections.IEnumerator DoAction(ActionMarker action, TypewriterCore typewriter, TypingInfo typingInfo)
+ {
+ float targetTime = defaultTime;
+ if(action.parameters.Length > 0)
+ {
+ FormatUtils.TryGetFloat(action.parameters[0], defaultTime, out targetTime);
+ }
+
+ float t = 0;
+ while(t<=targetTime)
+ {
+ t += typewriter.TextAnimator.time.deltaTime;
+ yield return null;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs.meta
new file mode 100644
index 0000000..65a8542
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7806fdd5903ae4a1b8ddb77cde0d5832
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core.meta
new file mode 100644
index 0000000..b093b3b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7c3dbde1f78df466e95f8020923a8696
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs
new file mode 100644
index 0000000..6298304
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs
@@ -0,0 +1,18 @@
+using Febucci.UI.Core;
+using Febucci.UI.Core.Parsing;
+
+namespace Febucci.UI.Actions
+{
+ [System.Serializable]
+ public abstract class ActionScriptableBase : UnityEngine.ScriptableObject, ITagProvider
+ {
+ [UnityEngine.SerializeField] string tagID;
+ public string TagID
+ {
+ get => tagID;
+ set => tagID = value;
+ }
+
+ public abstract System.Collections.IEnumerator DoAction(ActionMarker action, TypewriterCore typewriter, TypingInfo typingInfo);
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs.meta
new file mode 100644
index 0000000..7906dec
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b39050096895d4d758c32f76c7391954
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations.meta
new file mode 100644
index 0000000..3bf910c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 452cdf0b0bd2b53428c1a3398784e999
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances.meta
new file mode 100644
index 0000000..3b25923
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7351ce21b48094cd69f7fbc6531652bc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in.meta
new file mode 100644
index 0000000..bb33e4e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7a9665765cbb54293a006234c8f34c0d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs
new file mode 100644
index 0000000..b05b2e4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs
@@ -0,0 +1,65 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Diagonal Expand Appearance", menuName = "Text Animator/Animations/Appearances/Diagonal Expand")]
+ [EffectInfo("diagexp", EffectCategory.Appearances)]
+ public sealed class DiagonalExpandAppearance : AppearanceScriptableBase
+ {
+ public bool diagonalFromBttmLeft;
+
+ int targetA;
+ int targetB;
+
+ //--Temp variables--
+ Vector3 middlePos;
+ float pct;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ base.ResetContext(animator);
+ diagonalFromBttmLeft = true;
+ UpdateOrientation();
+ }
+
+ void UpdateOrientation()
+ {
+ if (diagonalFromBttmLeft) //expands bottom left and top right
+ {
+ targetA = 0;
+ targetB = 2;
+ }
+ else //expands bottom right and top left
+ {
+ targetA = 1;
+ targetB = 3;
+ }
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ middlePos = character.current.positions.GetMiddlePos();
+ pct = Tween.EaseInOut(character.passedTime / duration);
+
+ character.current.positions[targetA] = Vector3.LerpUnclamped(middlePos, character.current.positions[targetA], pct);
+ //top right copies from bottom right
+ character.current.positions[targetB] = Vector3.LerpUnclamped(middlePos, character.current.positions[targetB], pct);
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "bot":
+ diagonalFromBttmLeft = (int)modifier.value == 1;
+ UpdateOrientation();
+ break;
+ default: base.SetModifier(modifier); break;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs.meta
new file mode 100644
index 0000000..c1ce5fa
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7303246fad8e2a049aebd6c0c71d2985
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs
new file mode 100644
index 0000000..33af797
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs
@@ -0,0 +1,29 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Fade Appearance", menuName = "Text Animator/Animations/Appearances/Fade")]
+ [EffectInfo("fade", EffectCategory.Appearances)]
+ public sealed class FadeAppearance : AppearanceScriptableBase
+ {
+ Color32 temp;
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ //from transparent to real color
+ for (int i = 0; i < TextUtilities.verticesPerChar; i++)
+ {
+ temp = character.current.colors[i];
+ temp.a = 0;
+
+ character.current.colors[i] = Color32.LerpUnclamped(character.current.colors[i], temp,
+ Tween.EaseInOut(1 - (character.passedTime / duration)));
+ }
+
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs.meta
new file mode 100644
index 0000000..c0c700c
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6d26528e73e36f64dab95b69625232a7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs
new file mode 100644
index 0000000..5afc6b4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs
@@ -0,0 +1,99 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Horizontal Expand Appearance", menuName = "Text Animator/Animations/Appearances/Horizontal Expand")]
+ [EffectInfo("horiexp", EffectCategory.Appearances)]
+ public sealed class HorizontalExpandAppearance : AppearanceScriptableBase
+ {
+ //expand type
+ public enum ExpType
+ {
+ Left, //from left to right
+ Middle, //expands from the middle to te extents
+ Right //from right to left
+ }
+
+
+ public ExpType type = ExpType.Left;
+
+ //--Temp variables--
+ Vector2 startTop;
+ Vector2 startBot;
+ float pct;
+
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ base.ResetContext(animator);
+ type = ExpType.Left;
+ }
+
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ pct = Tween.EaseInOut(character.passedTime / duration);
+
+ switch (type)
+ {
+ default:
+ case ExpType.Left:
+ //top left and bot left
+ startTop = character.current.positions[1];
+ startBot = character.current.positions[0];
+
+ character.current.positions[2] = Vector3.LerpUnclamped(startTop, character.current.positions[2], pct);
+ character.current.positions[3] = Vector3.LerpUnclamped(startBot, character.current.positions[3], pct);
+ break;
+
+ case ExpType.Right:
+ //top right and bot right
+ startTop = character.current.positions[2];
+ startBot = character.current.positions[3];
+
+ character.current.positions[1] = Vector3.LerpUnclamped(startTop, character.current.positions[1], pct);
+ character.current.positions[0] = Vector3.LerpUnclamped(startBot, character.current.positions[0], pct);
+ break;
+
+ case ExpType.Middle:
+ //Middle positions
+ startTop = (character.current.positions[1] + character.current.positions[2]) / 2;
+ startBot = (character.current.positions[0] + character.current.positions[3]) / 2;
+
+ //top vertices
+ character.current.positions[1] = Vector3.LerpUnclamped(startTop, character.current.positions[1], pct);
+ character.current.positions[2] = Vector3.LerpUnclamped(startTop, character.current.positions[2], pct);
+
+ //bottom vertices
+ character.current.positions[0] = Vector3.LerpUnclamped(startBot, character.current.positions[0], pct);
+ character.current.positions[3] = Vector3.LerpUnclamped(startBot, character.current.positions[3], pct);
+
+ break;
+ }
+
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "x":
+ switch (modifier.value)
+ {
+ case -1: type = ExpType.Left; break;
+ case 0: type = ExpType.Middle; break;
+ case 1: type = ExpType.Right; break;
+ default: Debug.LogError($"Text Animator: you set an '{modifier.name}' modifier with value '{modifier.value}' for the HorizontalExpandAppearance effect, but it can only be '-1', '0', or '1'"); break;
+ }
+ break;
+ default:
+ base.SetModifier(modifier);
+ break;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs.meta
new file mode 100644
index 0000000..050a7d5
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3dbde6098d9bea441b3ac872e52073ba
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs
new file mode 100644
index 0000000..44b8179
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs
@@ -0,0 +1,37 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Offset Appearance", menuName = "Text Animator/Animations/Appearances/Offset")]
+ [EffectInfo("offset", EffectCategory.Appearances)]
+ public sealed class OffsetAppearance : AppearanceScriptableBase
+ {
+ public float baseAmount = 10;
+ float amount;
+ public Vector2 baseDirection = Vector2.one;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ base.ResetContext(animator);
+ amount = baseAmount;
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ character.current.positions.MoveChar(baseDirection * amount * character.uniformIntensity * Tween.EaseIn(1 - character.passedTime / duration));
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "a": amount = baseAmount * modifier.value; break;
+ default: base.SetModifier(modifier); break;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs.meta
new file mode 100644
index 0000000..7d729cb
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 146552007a93ecc42b0d63f26788e6cb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs
new file mode 100644
index 0000000..8aa8b48
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs
@@ -0,0 +1,58 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "RandomDir Appearance", menuName = "Text Animator/Animations/Appearances/Random Direction")]
+ [EffectInfo("rdir", EffectCategory.Appearances)]
+ public sealed class RandomDirectionAppearance : AppearanceScriptableBase
+ {
+ public float baseAmount = 10;
+ float amount;
+ Vector3[] directions;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ base.ResetContext(animator);
+ amount = baseAmount;
+ }
+
+ protected override void OnInitialize()
+ {
+ base.OnInitialize();
+
+ directions = new Vector3[20];
+
+ //Calculates a random direction for each character (which won't change)
+ for(int i = 0; i < directions.Length; i++)
+ {
+ directions[i] = TextUtilities.fakeRandoms[Random.Range(0, TextUtilities.fakeRandomsCount - 1)] * Mathf.Sign(Mathf.Sin(i));
+ }
+ }
+
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ int index = character.index % directions.Length;
+
+ //Moves all towards a direction
+ character.current.positions.MoveChar(
+ directions[index]
+ * amount
+ * character.uniformIntensity
+ * Tween.EaseIn(1 - character.passedTime / duration));
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "a": amount = baseAmount * modifier.value; break;
+ default: base.SetModifier(modifier); break;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs.meta
new file mode 100644
index 0000000..621750e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6a65a9b7775dded41a0295e6f75be25d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs
new file mode 100644
index 0000000..6afda92
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs
@@ -0,0 +1,43 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Rotating Appearance", menuName = "Text Animator/Animations/Appearances/Rotating")]
+ [EffectInfo("rot", EffectCategory.Appearances)]
+ [DefaultValue(nameof(baseDuration), .7f)]
+ public sealed class RotatingAppearance : AppearanceScriptableBase
+ {
+ public float baseTargetAngle = 50;
+ float targetAngle;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ base.ResetContext(animator);
+ targetAngle = baseTargetAngle;
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ character.current.positions.RotateChar(
+ Mathf.Lerp(
+ targetAngle,
+ 0,
+ Tween.EaseInOut(character.passedTime / duration)
+ )
+ );
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "a": targetAngle = baseTargetAngle * modifier.value; break;
+ default: base.SetModifier(modifier); break;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs.meta
new file mode 100644
index 0000000..e291d19
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 465a2951870a6954d8205f9c58a546de
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs
new file mode 100644
index 0000000..193c4ea
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs
@@ -0,0 +1,37 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Size Appearance", menuName = "Text Animator/Animations/Appearances/Size")]
+ [EffectInfo("size", EffectCategory.Appearances)]
+ public sealed class SizeAppearance : AppearanceScriptableBase
+ {
+ float amplitude;
+ public float baseAmplitude = 2;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ base.ResetContext(animator);
+ amplitude = baseAmplitude * -1 + 1;
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ character.current.positions.LerpUnclamped(
+ character.current.positions.GetMiddlePos(),
+ Tween.EaseIn(1 - (character.passedTime / duration)) * amplitude
+ );
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "a": amplitude = baseAmplitude * modifier.value; break;
+ default: base.SetModifier(modifier); break;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs.meta
new file mode 100644
index 0000000..1c7a00e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5ff5882c38f1b6c4682c7f207f0c98db
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs
new file mode 100644
index 0000000..b4b7649
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs
@@ -0,0 +1,69 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Vertical Expand Appearance", menuName = "Text Animator/Animations/Appearances/Vertical Expand")]
+ [EffectInfo("vertexp", EffectCategory.Appearances)]
+ public sealed class VerticalExpandAppearance : AppearanceScriptableBase
+ {
+ public bool startsFromBottom = true;
+ int startA, targetA;
+ int startB, targetB;
+
+ //--Temp variables--
+ float pct;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ base.ResetContext(animator);
+ SetOrientation(startsFromBottom);
+ }
+
+ void SetOrientation(bool fromBottom)
+ {
+ if (fromBottom) //From bottom to top
+ {
+
+ //top left copies bottom left
+ startA = 0;
+ targetA = 1;
+
+ //top right copies bottom right
+ startB = 3;
+ targetB = 2;
+ }
+ else //from top to bottom
+ {
+
+ //bottom left copies top left
+ startA = 1;
+ targetA = 0;
+
+ //bottom right copies top right
+ startB = 2;
+ targetB = 3;
+ }
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ pct = Tween.EaseInOut(character.passedTime / duration);
+
+ character.current.positions[targetA] = Vector3.LerpUnclamped(character.current.positions[startA], character.current.positions[targetA], pct);
+ character.current.positions[targetB] = Vector3.LerpUnclamped(character.current.positions[startB], character.current.positions[targetB], pct);
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "bot": SetOrientation((int)modifier.value == 1); break;
+ default: base.SetModifier(modifier); break;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs.meta
new file mode 100644
index 0000000..7bb2dd7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 351d9d9e5c9ea7946842aee1160f7731
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core.meta
new file mode 100644
index 0000000..5d1b0bc
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9164d28933c0b4352b5b48dcbb7c8240
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs
new file mode 100644
index 0000000..2139179
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs
@@ -0,0 +1,31 @@
+using Febucci.UI.Core;
+
+namespace Febucci.UI.Effects
+{
+ ///
+ /// Base class for animating letters in Text Animator
+ ///
+ [System.Serializable]
+ public abstract class AppearanceScriptableBase : AnimationScriptableBase
+ {
+ public float baseDuration = .5f;
+ protected float duration;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ duration = baseDuration;
+ }
+
+ public override float GetMaxDuration() => duration; //TODO improve this, a bit hacky
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "d": duration = baseDuration * modifier.value; break;
+ }
+ }
+
+ public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => character.passedTime <= duration;
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs.meta
new file mode 100644
index 0000000..6b565e8
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cb71b61f2fec745acaf81b5bf98f19f2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors.meta
new file mode 100644
index 0000000..459a67a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0ca263a61b56e4699ac2efe4d837032e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in.meta
new file mode 100644
index 0000000..bc6ef19
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 58afd08ab8fee49849a0174b6e5bb64b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs
new file mode 100644
index 0000000..d4bcffb
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs
@@ -0,0 +1,41 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Bounce", menuName = "Text Animator/Animations/Behaviors/Bounce")]
+ [EffectInfo("bounce", EffectCategory.Behaviors)]
+ [DefaultValue(nameof(baseAmplitude), 13.19f)]
+ [DefaultValue(nameof(baseFrequency), 1f)]
+ [DefaultValue(nameof(baseWaveSize), .2f)]
+ public sealed class BounceBehavior : BehaviorScriptableSine
+ {
+ //Calculates the tween percentage
+ float BounceTween(float t)
+ {
+ const float stillTime = .2f;
+ const float easeIn = .2f;
+ const float bounce = 1 - stillTime - easeIn;
+
+ if (t <= easeIn)
+ return Tween.EaseInOut(t / easeIn);
+ t -= easeIn;
+
+ if (t <= bounce)
+ return 1 - Tween.BounceOut(t / bounce);
+
+ return 0;
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ character.current.positions.MoveChar(
+ Vector3.up * character.uniformIntensity *
+ BounceTween((Mathf.Repeat(animator.time.timeSinceStart * frequency - waveSize * character.index, 1))) * amplitude
+ );
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs.meta
new file mode 100644
index 0000000..89042cf
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a333962955c4a08498d132d86d9ce19e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs
new file mode 100644
index 0000000..e986d2b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs
@@ -0,0 +1,47 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Dangle", fileName = "Dangle Behavior")]
+ [EffectInfo("dangle", EffectCategory.Behaviors)]
+ [DefaultValue(nameof(baseAmplitude), 7.87f)]
+ [DefaultValue(nameof(baseFrequency), 3.37f)]
+ [DefaultValue(nameof(baseWaveSize), .306f)]
+ public sealed class DangleBehavior : BehaviorScriptableSine
+ {
+ public bool anchorBottom;
+ float sin;
+
+ int targetIndex1;
+ int targetIndex2;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ base.ResetContext(animator);
+
+ //bottom
+ if (anchorBottom)
+ {
+ targetIndex1 = 1;
+ targetIndex2 = 2;
+ }
+ else
+ {
+ targetIndex1 = 0;
+ targetIndex2 = 3;
+ }
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+
+ sin = Mathf.Sin(frequency * animator.time.timeSinceStart + character.index * waveSize) * amplitude * character.uniformIntensity;
+
+ //moves one side (top or bottom) torwards one direction
+ character.current.positions[targetIndex1] += Vector3.right * sin;
+ character.current.positions[targetIndex2] += Vector3.right * sin;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs.meta
new file mode 100644
index 0000000..ee4a202
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 01a91f0b9c670b242ae5c34286409cd9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs
new file mode 100644
index 0000000..133bb73
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs
@@ -0,0 +1,69 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Fade Behavior", menuName = "Text Animator/Animations/Behaviors/Fade")]
+ [EffectInfo("fade", EffectCategory.Behaviors)]
+ public sealed class FadeBehavior : BehaviorScriptableBase
+ {
+ Color32 temp;
+ public float baseSpeed = .5f;
+ public float baseDelay = 1f;
+ float delay;
+ float timeToShow;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ delay = baseDelay;
+ SetTimeToShow(baseSpeed);
+ }
+
+ //given speed (per second), sets the time needed to show
+ void SetTimeToShow(float speed) => timeToShow = 1 / speed; //TODO check for zero
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "f":
+ SetTimeToShow(baseSpeed * modifier.value);
+ break;
+ case "d": delay = baseDelay * modifier.value; break;
+ }
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ if (character.passedTime <= delay) //not passed enough time yet
+ return;
+
+ float charPct = (character.passedTime - delay) / timeToShow;
+
+ if (charPct > 1) charPct = 1;
+
+ //Lerps
+ if (charPct < 1 && charPct >= 0)
+ {
+ for (var i = 0; i < TextUtilities.verticesPerChar; i++)
+ {
+ temp = character.current.colors[i];
+ temp.a = 0;
+
+ character.current.colors[i] = Color32.LerpUnclamped(character.current.colors[i], temp, Tween.EaseInOut(charPct));
+ }
+ }
+ else //Keeps them hidden
+ {
+ for (var i = 0; i < TextUtilities.verticesPerChar; i++)
+ {
+ temp = character.current.colors[i];
+ temp.a = 0;
+
+ character.current.colors[i] = temp;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs.meta
new file mode 100644
index 0000000..00dbe14
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d1f1dde3a46b6e748885a8d202c32044
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs
new file mode 100644
index 0000000..dde29c4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs
@@ -0,0 +1,46 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Pendulum Behavior", menuName = "Text Animator/Animations/Behaviors/Pendulum")]
+ [EffectInfo("pend", EffectCategory.Behaviors)]
+ [DefaultValue(nameof(baseAmplitude), 24.7f)]
+ [DefaultValue(nameof(baseFrequency), 3.1f)]
+ [DefaultValue(nameof(baseWaveSize), .2f)]
+ public sealed class PendulumBehavior : BehaviorScriptableSine
+ {
+ public bool anchorBottom;
+
+ int targetVertex1;
+ int targetVertex2;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ base.ResetContext(animator);
+
+ if (anchorBottom)
+ {
+ //anchored at the bottom
+ targetVertex1 = 0;
+ targetVertex2 = 3;
+ }
+ else
+ {
+ //anchored at the top
+ targetVertex1 = 1;
+ targetVertex2 = 2;
+ }
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ character.current.positions.RotateChar(
+ Mathf.Sin(-animator.time.timeSinceStart * frequency + waveSize * character.index) * amplitude,
+ (character.current.positions[targetVertex1] + character.current.positions[targetVertex2]) / 2 //bottom center as their rotation pivot
+ );
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs.meta
new file mode 100644
index 0000000..b83f707
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5005fc4984831834d826c8a9e3d42443
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs
new file mode 100644
index 0000000..93ab11b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs
@@ -0,0 +1,46 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Rainbow", fileName = "Rainbow Behavior")]
+ [EffectInfo("rainb", EffectCategory.Behaviors)]
+ public sealed class RainbowBehavior : BehaviorScriptableBase
+ {
+ public float baseFrequency = 0.5f;
+ public float baseWaveSize = 0.08f;
+
+
+ float frequency;
+ float waveSize;
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ //frequency
+ case "f": frequency = baseFrequency * modifier.value; break;
+ //wave size
+ case "s": waveSize = baseWaveSize * modifier.value; break;
+ }
+ }
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ frequency = baseFrequency;
+ waveSize = baseWaveSize;
+ }
+
+ Color32 temp;
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ for (byte i = 0; i < TextUtilities.verticesPerChar; i++)
+ {
+ //shifts hue
+ temp = Color.HSVToRGB(Mathf.PingPong(animator.time.timeSinceStart * frequency + character.index * waveSize, 1), 1, 1);
+ temp.a = character.current.colors[i].a; //preserves original alpha
+ character.current.colors[i] = temp;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs.meta
new file mode 100644
index 0000000..f53d337
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5400420051c0a9341be4aece65080148
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs
new file mode 100644
index 0000000..321eaf8
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs
@@ -0,0 +1,42 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Rotation", fileName = "Rotation Behavior")]
+ [EffectInfo("rot", EffectCategory.Behaviors)]
+ public sealed class RotationBehavior : BehaviorScriptableBase
+ {
+
+ public float baseRotSpeed = 180;
+ public float baseDiffBetweenChars = 10;
+
+ float angleSpeed;
+ float angleDiffBetweenChars;
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ //frequency
+ case "f": angleSpeed = baseRotSpeed * modifier.value; break;
+ //angle diff
+ case "w": angleDiffBetweenChars = baseDiffBetweenChars * modifier.value; break;
+ }
+ }
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ angleSpeed = baseRotSpeed;
+ angleDiffBetweenChars = baseDiffBetweenChars;
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ character.current.positions.RotateChar(-animator.time.timeSinceStart * angleSpeed
+ + angleDiffBetweenChars * character.index);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs.meta
new file mode 100644
index 0000000..450c69d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c179eec3e2795104eb216e340b8d8513
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs
new file mode 100644
index 0000000..d9e9b47
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs
@@ -0,0 +1,79 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Shake", fileName = "Shake Behavior")]
+ [EffectInfo("shake", EffectCategory.Behaviors)]
+ [DefaultValue(nameof(baseAmplitude), 1.13f)]
+ [DefaultValue(nameof(baseDelay), .1f)]
+ [DefaultValue(nameof(baseWaveSize), .45f)]
+ public sealed class ShakeBehavior : BehaviorScriptableBase
+ {
+ //---BASE VALUES---
+ public float baseAmplitude = .085f;
+ public float baseDelay = .04f;
+ public float baseWaveSize = .2f;
+
+ float amplitude;
+ float delay;
+ float waveSize;
+
+ //--- ANIMATION ---
+
+ void ClampValues()
+ {
+ delay = Mathf.Clamp(delay, 0.002f, 500);
+ }
+
+ protected override void OnInitialize()
+ {
+ base.OnInitialize();
+
+ randIndex = Random.Range(0, TextUtilities.fakeRandomsCount);
+ }
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ amplitude = baseAmplitude;
+ delay = baseDelay;
+ waveSize = baseWaveSize;
+
+ ClampValues();
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "a": amplitude = baseAmplitude * modifier.value; break;
+ case "d": delay = baseDelay * modifier.value; break;
+ case "w": waveSize = baseWaveSize * modifier.value; break;
+ }
+
+ ClampValues();
+ }
+
+ int randIndex;
+ float timePassed;
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ timePassed = animator.time.timeSinceStart;
+ timePassed += character.index * waveSize;
+
+ randIndex = Mathf.RoundToInt(timePassed / delay) % (TextUtilities.fakeRandomsCount);
+ if(randIndex<0) randIndex *= -1; //always positive
+
+ character.current.positions.MoveChar
+ (
+ TextUtilities.fakeRandoms[randIndex] * amplitude * character.uniformIntensity
+ );
+ }
+
+ void OnValidate()
+ {
+ ClampValues();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs.meta
new file mode 100644
index 0000000..edb2527
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 144066a43449f48469b89b2e2c9ab37d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs
new file mode 100644
index 0000000..39e3e33
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs
@@ -0,0 +1,42 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Size", fileName = "Size Behavior")]
+ [EffectInfo("incr", EffectCategory.Behaviors)]
+ public sealed class SizeBehavior : BehaviorScriptableBase
+ {
+ public float baseAmplitude = 1.5f;
+ public float baseFrequency = 4;
+ public float baseWaveSize = 0.2f;
+
+ float amplitude;
+ float frequency;
+ float waveSize;
+ public override void ResetContext(TAnimCore animator)
+ {
+ amplitude = baseAmplitude * -1 + 1;
+ frequency = baseFrequency;
+ waveSize = baseWaveSize;
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch(modifier.name)
+ {
+ case "a": amplitude = baseAmplitude * modifier.value * -1 + 1; break;
+ case "f": frequency = baseFrequency * modifier.value; break;
+ case "w": waveSize = baseWaveSize * modifier.value; break;
+ }
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ character.current.positions.LerpUnclamped(
+ character.current.positions.GetMiddlePos(),
+ (Mathf.Cos(animator.time.timeSinceStart* frequency + character.index * waveSize) + 1) / 2f * amplitude);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs.meta
new file mode 100644
index 0000000..31ae479
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6da0c21b80efda84188912ce510ee1ca
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs
new file mode 100644
index 0000000..76cc4ae
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs
@@ -0,0 +1,29 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Slide Behavior", menuName = "Text Animator/Animations/Behaviors/Slide")]
+ [EffectInfo("slide", EffectCategory.Behaviors)]
+ [DefaultValue(nameof(baseAmplitude), 5)]
+ [DefaultValue(nameof(baseFrequency), 3)]
+ [DefaultValue(nameof(baseWaveSize), 0)]
+ public sealed class SlideBehavior : BehaviorScriptableSine
+ {
+ float sin;
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ sin = Mathf.Sin(frequency * animator.time.timeSinceStart
+ + character.index * waveSize) * amplitude * character.uniformIntensity;
+
+ //bottom, torwards one direction
+ character.current.positions[0] += Vector3.right * sin;
+ character.current.positions[3] += Vector3.right * sin;
+ //top, torwards the opposite dir
+ character.current.positions[1] += Vector3.right * -sin;
+ character.current.positions[2] += Vector3.right * -sin;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs.meta
new file mode 100644
index 0000000..d1e645b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a740b03d4c3f2d84f9cfc7b3a6f8ea80
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs
new file mode 100644
index 0000000..600fc74
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs
@@ -0,0 +1,19 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Swing", fileName = "Swing Behavior")]
+ [EffectInfo("swing", EffectCategory.Behaviors)]
+ [DefaultValue(nameof(baseAmplitude), 22.74f)]
+ [DefaultValue(nameof(baseFrequency), 3.65f)]
+ [DefaultValue(nameof(baseWaveSize), .171f)]
+ public sealed class SwingBehavior : BehaviorScriptableSine
+ {
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ character.current.positions.RotateChar(Mathf.Cos(animator.time.timeSinceStart * frequency + character.index * waveSize) * amplitude);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs.meta
new file mode 100644
index 0000000..c32b8a7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 63b7822b5552d3748b1acc2a07066822
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs
new file mode 100644
index 0000000..858ea38
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs
@@ -0,0 +1,22 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Wave", fileName = "Wave Behavior")]
+ [EffectInfo("wave", EffectCategory.Behaviors)]
+ [DefaultValue(nameof(baseAmplitude), 7.27f)]
+ [DefaultValue(nameof(baseFrequency), 4f)]
+ [DefaultValue(nameof(baseWaveSize), .4f)]
+ public sealed class WaveBehavior : BehaviorScriptableSine
+ {
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ character.current.positions.MoveChar(
+ Vector3.up * Mathf.Sin(animator.time.timeSinceStart * frequency + character.index * waveSize)
+ * amplitude * character.uniformIntensity);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs.meta
new file mode 100644
index 0000000..cc67ed1
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 99de7ce7cdaed2d42b0bd233e69e67db
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs
new file mode 100644
index 0000000..1067c78
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs
@@ -0,0 +1,42 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Wiggle", fileName = "Wiggle Behavior")]
+ [EffectInfo("wiggle", EffectCategory.Behaviors)]
+ [DefaultValue(nameof(baseAmplitude), 4.74f)]
+ [DefaultValue(nameof(baseFrequency), 7.82f)]
+ [DefaultValue(nameof(baseWaveSize), .551f)]
+ public sealed class WiggleBehavior : BehaviorScriptableSine
+ {
+ const int maxDirections = 23;
+ Vector3[] directions;
+ int indexCache;
+
+ protected override void OnInitialize()
+ {
+ base.OnInitialize();
+
+ directions = new Vector3[maxDirections];
+
+ //Calculates a random direction for each character (which won't change)
+ for(int i = 0; i < maxDirections; i++)
+ {
+ directions[i] = TextUtilities.fakeRandoms[Random.Range(0, TextUtilities.fakeRandomsCount - 1)] * Mathf.Sign(Mathf.Sin(i));
+ }
+ }
+
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ indexCache = character.index % maxDirections;
+
+ character.current.positions.MoveChar(
+ directions[indexCache]
+ * Mathf.Sin(animator.time.timeSinceStart * frequency + character.index * waveSize)
+ * amplitude
+ * character.uniformIntensity);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs.meta
new file mode 100644
index 0000000..4a81650
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7c98870d7ebce9a4fa6c4a16e9701755
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core.meta
new file mode 100644
index 0000000..17ccdac
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5c76974580a2e4940a22bd3504b213d9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs
new file mode 100644
index 0000000..d23907e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs
@@ -0,0 +1,14 @@
+using Febucci.UI.Core;
+
+namespace Febucci.UI.Effects
+{
+ ///
+ /// Base class for animating letters in Text Animator
+ ///
+ public abstract class BehaviorScriptableBase : AnimationScriptableBase
+ {
+ public override float GetMaxDuration() => -1; //infinite
+ public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true;
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs.meta
new file mode 100644
index 0000000..80b75c4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d77bbe0b705d24c8caed399bf26d7b97
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs
new file mode 100644
index 0000000..edb14f4
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs
@@ -0,0 +1,38 @@
+using Febucci.UI.Core;
+
+namespace Febucci.UI.Effects
+{
+ public abstract class BehaviorScriptableSine : BehaviorScriptableBase
+ {
+ //--- BASE VALUES ---
+ public float baseAmplitude = 1;
+ public float baseFrequency = 1;
+ [UnityEngine.Range(0,1)] public float baseWaveSize = .2f;
+
+ //--- EFFECTS INFO ---
+ protected float amplitude;
+ protected float frequency;
+ protected float waveSize;
+
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ amplitude = baseAmplitude;
+ frequency = baseFrequency;
+ waveSize = baseWaveSize;
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch(modifier.name)
+ {
+ case "a": amplitude = baseAmplitude * modifier.value; break;
+ case "f": frequency = baseFrequency * modifier.value; break;
+ //TODO if wavesize is 0, then this never changes. Maybe
+ //set it directly instead of multiplying?
+ case "w": waveSize = baseWaveSize * modifier.value; break;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs.meta
new file mode 100644
index 0000000..df89640
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8288d52cadf6b453591b461027037a85
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special.meta
new file mode 100644
index 0000000..551ad1a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44af3aa44863aa44f926c79c825adb59
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs
new file mode 100644
index 0000000..19293d7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs
@@ -0,0 +1,84 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ ///
+ /// Applies multiples animations, allowing user to use one tag for all of them
+ ///
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Composite Animation", menuName = "Text Animator/Animations/Special/Composite")]
+ [EffectInfo("", EffectCategory.All)]
+ public sealed class CompositeAnimation : AnimationScriptableBase
+ {
+ public AnimationScriptableBase[] animations = new AnimationScriptableBase[0];
+
+ protected override void OnInitialize()
+ {
+ base.OnInitialize();
+
+ ValidateArray();
+
+ foreach (var anim in animations)
+ {
+ anim.InitializeOnce();
+ }
+ }
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ foreach (var anim in animations)
+ {
+ anim.ResetContext(animator);
+ }
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ base.SetModifier(modifier);
+ foreach (var anim in animations)
+ {
+ anim.SetModifier(modifier);
+ }
+ }
+
+ public override void ApplyEffectTo(ref CharacterData character, TAnimCore animator)
+ {
+ foreach (var anim in animations)
+ {
+ if(anim.CanApplyEffectTo(character, animator))
+ anim.ApplyEffectTo(ref character, animator);
+ }
+ }
+
+ //Prevents double check
+ public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true;
+
+ public override float GetMaxDuration()
+ {
+ //Calculates max duration between animations
+ float maxDuration = -1;
+ foreach (var anim in animations)
+ {
+ maxDuration = Mathf.Max(maxDuration, anim.GetMaxDuration());
+ }
+
+ return maxDuration;
+ }
+
+ void ValidateArray()
+ {
+ //prevents recursion
+ var validated = new System.Collections.Generic.List();
+
+ for (int i = 0; i < animations.Length; i++)
+ {
+ if(animations[i]!=this) validated.Add(animations[i]);
+ }
+
+ animations = validated.ToArray();
+ }
+
+ void OnValidate() => ValidateArray();
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs.meta
new file mode 100644
index 0000000..504dc77
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1030e778d6c8678498b5860c46980fb7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs
new file mode 100644
index 0000000..ccd6770
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs
@@ -0,0 +1,98 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ ///
+ /// Applies multiples animations, allowing user to use one tag for all of them
+ ///
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Composite With Emission", menuName = "Text Animator/Animations/Special/Composite With Emission")]
+ [EffectInfo("", EffectCategory.All)]
+ public sealed class CompositeWithEmission : AnimationScriptableBase
+ {
+ public TimeMode timeMode = new TimeMode(true);
+ [EmissionCurveProperty] public EmissionCurve emissionCurve = new EmissionCurve();
+ public AnimationScriptableBase[] animations = new AnimationScriptableBase[0];
+
+ protected override void OnInitialize()
+ {
+ base.OnInitialize();
+
+ ValidateArray();
+
+ foreach (var anim in animations)
+ {
+ anim.InitializeOnce();
+ }
+
+ prev = new MeshData();
+ prev.colors = new Color32[TextUtilities.verticesPerChar];
+ prev.positions = new Vector3[TextUtilities.verticesPerChar];
+ }
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ foreach (var anim in animations)
+ {
+ anim.ResetContext(animator);
+ }
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ base.SetModifier(modifier);
+ foreach (var anim in animations)
+ {
+ anim.SetModifier(modifier);
+ }
+ }
+
+ MeshData prev;
+ public override void ApplyEffectTo(ref CharacterData character, TAnimCore animator)
+ {
+ float timePassed = timeMode.GetTime(animator.time.timeSinceStart, character.passedTime, character.index);
+ if(timePassed<0) return;
+
+ for (int i = 0; i < TextUtilities.verticesPerChar; i++)
+ {
+ prev.positions[i] = character.current.positions[i];
+ prev.colors[i] = character.current.colors[i];
+ }
+
+ float weight = emissionCurve.Evaluate(timePassed);
+ foreach (var anim in animations)
+ {
+ if(anim.CanApplyEffectTo(character, animator))
+ anim.ApplyEffectTo(ref character, animator);
+ }
+
+ for (int i = 0; i < TextUtilities.verticesPerChar; i++)
+ {
+ character.current.positions[i] = Vector3.LerpUnclamped(prev.positions[i], character.current.positions[i], weight);
+ character.current.colors[i] = Color32.LerpUnclamped(prev.colors[i], character.current.colors[i], weight);
+ }
+ }
+
+ //Prevents double check
+ public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true;
+
+ public override float GetMaxDuration() => emissionCurve.GetMaxDuration();
+
+ void ValidateArray()
+ {
+ //prevents recursion
+ var validated = new System.Collections.Generic.List();
+
+ for (int i = 0; i < animations.Length; i++)
+ {
+ if(animations[i]!=this) validated.Add(animations[i]);
+ }
+
+ animations = validated.ToArray();
+ }
+
+ void OnValidate() => ValidateArray();
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs.meta
new file mode 100644
index 0000000..6852386
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7c6129e0ca01d4768b7b56e188a0001d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves.meta
new file mode 100644
index 0000000..d8ac5fe
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e775bae152dd345599f58d6360352d31
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in.meta
new file mode 100644
index 0000000..7dbe211
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 634e4c6f22807e7449881726b1bd52ab
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs
new file mode 100644
index 0000000..9df2768
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs
@@ -0,0 +1,72 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Uniform Curve Animation", menuName = "Text Animator/Animations/Special/Uniform Curve")]
+ [EffectInfo("", EffectCategory.All)]
+ public sealed class UniformCurveAnimation : AnimationScriptableBase
+ {
+ public TimeMode timeMode = new TimeMode(true);
+ [EmissionCurveProperty] public EmissionCurve emissionCurve = new EmissionCurve();
+ public AnimationData animationData = new AnimationData();
+
+ //--- Modifiers ---
+ float weightMult;
+ float timeSpeed;
+
+ bool hasTransformEffects;
+
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ weightMult = 1;
+ timeSpeed = 1;
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "f": //frequency, increases the time speed
+ timeSpeed = modifier.value;
+ break;
+
+ case "a": //increase the amplitude
+ weightMult = modifier.value;
+ break;
+ }
+ }
+
+ float timePassed;
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ timePassed = timeMode.GetTime(animator.time.timeSinceStart * timeSpeed, character.passedTime * timeSpeed, character.index);
+ if (timePassed < 0)
+ return;
+
+ float weight = weightMult * emissionCurve.Evaluate(timePassed);
+
+ if(animationData.TryCalculatingMatrix(character, timePassed, weight, out var matrix, out var offset))
+ {
+ for (byte i = 0; i < TextUtilities.verticesPerChar; i++)
+ {
+ character.current.positions[i] = matrix.MultiplyPoint3x4(character.current.positions[i] - offset) + offset;
+ }
+ }
+
+ if(animationData.TryCalculatingColor(character, timePassed, weight, out var color))
+ {
+ character.current.colors.LerpUnclamped(color, Mathf.Clamp01(weight));
+ }
+
+ }
+
+ public override float GetMaxDuration() => emissionCurve.GetMaxDuration();
+
+ public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs.meta
new file mode 100644
index 0000000..af9eee7
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f29c16c9fe849e442b4f1bab0c32e28a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs
new file mode 100644
index 0000000..fe82367
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs
@@ -0,0 +1,112 @@
+using Febucci.UI.Core;
+using Febucci.UI.Effects;
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Febucci.UI.Effects
+{
+ [UnityEngine.Scripting.Preserve]
+ [CreateAssetMenu(fileName = "Vertex Curve Animation", menuName = "Text Animator/Animations/Special/Vertex Curve Animation")]
+ [EffectInfo("", EffectCategory.All)]
+ public sealed class VertexCurveAnimation : AnimationScriptableBase
+ {
+ public TimeMode timeMode = new TimeMode(true);
+ [EmissionCurveProperty] public EmissionCurve emissionCurve = new EmissionCurve();
+
+ [SerializeField] AnimationData[] animationPerVertexData = new AnimationData[TextUtilities.verticesPerChar];
+ public AnimationData[] VertexData
+ {
+ get => animationPerVertexData;
+ set
+ {
+ animationPerVertexData = value;
+ ClampVertexDataArray();
+ }
+ }
+
+ //--- Modifiers ---
+ float timeSpeed;
+ float weightMult;
+
+ //--- Management ---
+ Matrix4x4 matrix;
+ Vector3 offset;
+ Vector3 movement;
+ Vector2 scale;
+ Quaternion rot;
+ Color32 color;
+
+ public override void ResetContext(TAnimCore animator)
+ {
+ weightMult = 1;
+ timeSpeed = 1;
+ ClampVertexDataArray();
+ }
+
+ public override void SetModifier(ModifierInfo modifier)
+ {
+ switch (modifier.name)
+ {
+ case "f": //frequency, increases the time speed
+ timeSpeed = modifier.value;
+ break;
+
+ case "a": //increase the amplitude
+ weightMult = modifier.value;
+ break;
+ }
+ }
+
+ float timePassed;
+ public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator)
+ {
+ timePassed = timeMode.GetTime(animator.time.timeSinceStart * timeSpeed, character.passedTime * timeSpeed, character.index);
+ if(timePassed<0)
+ return;
+
+ float weight = weightMult * emissionCurve.Evaluate(timePassed);
+
+ for (byte i = 0; i < TextUtilities.verticesPerChar; i++)
+ {
+ if(animationPerVertexData[i].TryCalculatingMatrix(character, timePassed, weight, out matrix, out offset))
+ {
+ character.current.positions[i] = matrix.MultiplyPoint3x4(character.current.positions[i] - offset) + offset;
+ }
+
+ if(animationPerVertexData[i].TryCalculatingColor(character, timePassed, weight, out color))
+ {
+ character.current.colors[i] = Color32.LerpUnclamped(character.current.colors[i], color, Mathf.Clamp01(weight));
+ }
+ }
+ }
+
+ public override float GetMaxDuration() => emissionCurve.GetMaxDuration();
+ public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true;
+
+ void ClampVertexDataArray()
+ {
+ for (int i = 0; i < animationPerVertexData.Length; i++)
+ {
+ if (animationPerVertexData[i] == null)
+ animationPerVertexData[i] = new AnimationData();
+ }
+
+ if (animationPerVertexData.Length != TextUtilities.verticesPerChar)
+ {
+ Debug.LogError("Vertex data array must have four vertices. Clamping/Resizing to four.");
+
+ var newArray = new AnimationData[TextUtilities.verticesPerChar];
+ for (int i = 0; i < newArray.Length; i++)
+ {
+ if (i < animationPerVertexData.Length)
+ newArray[i] = animationPerVertexData[i];
+ else
+ newArray[i] = new AnimationData();
+ }
+ animationPerVertexData = newArray;
+ }
+ }
+
+ void OnValidate() => ClampVertexDataArray();
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs.meta
new file mode 100644
index 0000000..80b130b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 29c51188496414c2893fff43f194d40a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core.meta
new file mode 100644
index 0000000..d9cd875
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9447a4edcc4c042219276d5c0bad1da9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs
new file mode 100644
index 0000000..ea50d70
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs
@@ -0,0 +1,87 @@
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ [System.Serializable]
+ public class AnimationData
+ {
+ //--- Curves ---
+ //Movement
+ [FloatCurveProperty] public FloatCurve movementX = new FloatCurve(1, 0, 0);
+ [FloatCurveProperty] public FloatCurve movementY = new FloatCurve(1, 0, 0);
+ [FloatCurveProperty] public FloatCurve movementZ = new FloatCurve(1, 0, 0);
+
+ //Scale
+ [FloatCurveProperty] public FloatCurve scaleX = new FloatCurve(2, 0, 1);
+ [FloatCurveProperty] public FloatCurve scaleY = new FloatCurve(2, 0, 1);
+
+ //Rotation
+ [FloatCurveProperty] public FloatCurve rotX = new FloatCurve(45, 0, 0);
+ [FloatCurveProperty] public FloatCurve rotY = new FloatCurve(45, 0, 0);
+ [FloatCurveProperty] public FloatCurve rotZ = new FloatCurve(45, 0, 0);
+
+ //Color
+ [ColorCurveProperty] public ColorCurve colorCurve = new ColorCurve(0);
+
+ Vector3 movement;
+ Vector2 scale;
+ Quaternion rot;
+
+ public bool TryCalculatingMatrix(Core.CharacterData character,
+ float timePassed,
+ float weight,
+ out Matrix4x4 matrix,
+ out Vector3 offset)
+ {
+ //Saves a bunch of performance in case user wants only color or movement
+ //TODO cache
+ matrix = new Matrix4x4();
+
+ if (!(movementX.enabled || movementY.enabled || movementZ.enabled
+ || rotX.enabled || rotY.enabled || rotZ.enabled
+ || scaleX.enabled || scaleY.enabled))
+ {
+ offset = Vector2.zero;
+ return false;
+ }
+
+ offset = (character.current.positions[0] + character.current.positions[2]) / 2f;
+
+ //weighted rotation
+ rot = Quaternion.Euler(
+ Mathf.LerpUnclamped(0, rotX.Evaluate(timePassed, character.index), weight),
+ Mathf.LerpUnclamped(0, rotY.Evaluate(timePassed, character.index), weight),
+ Mathf.LerpUnclamped(0, rotZ.Evaluate(timePassed, character.index), weight));
+
+ //weighted movement
+ movement = new Vector3(
+ Mathf.LerpUnclamped(0, movementX.Evaluate(timePassed, character.index), weight),
+ Mathf.LerpUnclamped(0, movementY.Evaluate(timePassed, character.index), weight),
+ Mathf.LerpUnclamped(0, movementZ.Evaluate(timePassed, character.index), weight));
+
+ //weighted scale
+ scale = new Vector2(
+ Mathf.LerpUnclamped(1, scaleX.Evaluate(timePassed, character.index), weight),
+ Mathf.LerpUnclamped(1, scaleY.Evaluate(timePassed, character.index), weight));
+
+ matrix.SetTRS(
+ movement,
+ rot,
+ scale);
+
+ return true;
+ }
+
+ public bool TryCalculatingColor(Core.CharacterData character, float timePassed, float weight, out Color32 color)
+ {
+ if(!colorCurve.enabled)
+ {
+ color = Color.white;
+ return false;
+ }
+
+ color = colorCurve.Evaluate(timePassed, character.index);
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs.meta
new file mode 100644
index 0000000..f696898
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3b417e2a805ff4c638d914f06efa1659
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs
new file mode 100644
index 0000000..ab948dd
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs
@@ -0,0 +1,47 @@
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ public class ColorCurveProperty : PropertyAttribute
+ {
+
+ }
+
+ [System.Serializable]
+ public struct ColorCurve
+ {
+ public bool enabled;
+
+ public Gradient colorOverTime;
+ public float waveSize;
+ public float duration;
+
+ public ColorCurve(float waveSize)
+ {
+ this.enabled = false;
+ this.waveSize = waveSize;
+ this.duration = 1;
+ this.colorOverTime = new Gradient();
+ colorOverTime.SetKeys(
+ new GradientColorKey[]
+ {
+ new GradientColorKey(Color.white, 0),
+ new GradientColorKey(Color.cyan, 0.5f),
+ new GradientColorKey(Color.white, 1)
+ },
+
+ new GradientAlphaKey[]
+ {
+ new GradientAlphaKey(1, 0),
+ new GradientAlphaKey(1, 1)
+ }
+ );
+ }
+
+ public Color32 Evaluate(float time, int charIndex)
+ {
+ time = Mathf.Repeat(time + charIndex * waveSize, duration);
+ return colorOverTime.Evaluate(time);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs.meta
new file mode 100644
index 0000000..5927395
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 54279f81e5b424013885578744e46a04
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs
new file mode 100644
index 0000000..fc14538
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs
@@ -0,0 +1,43 @@
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ public class EmissionCurveProperty : PropertyAttribute
+ {
+
+ }
+
+ [System.Serializable]
+ public class EmissionCurve
+ {
+ public int cycles;
+ public float duration;
+ public float GetMaxDuration() => cycles > 0 ? duration * cycles : -1;
+ [SerializeField] public AnimationCurve weightOverTime;
+ public EmissionCurve()
+ {
+ cycles = -1;
+ duration = 1;
+ weightOverTime = new AnimationCurve(
+ new[]
+ {
+ new Keyframe(0, 1),
+ new Keyframe(1, 1)
+ });
+ }
+
+ public EmissionCurve(params Keyframe[] keyframes)
+ {
+ cycles = -1;
+ duration = 1;
+ weightOverTime = new AnimationCurve(keyframes);
+ }
+
+ public float Evaluate(float timePassed)
+ {
+ if (cycles > 0 && timePassed > duration * cycles) return 0;
+
+ return weightOverTime.Evaluate(timePassed % duration);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs.meta
new file mode 100644
index 0000000..0e3aebe
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0a1f62454fdf64f1fa75746c09b89a39
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs
new file mode 100644
index 0000000..3c8814e
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs
@@ -0,0 +1,39 @@
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Febucci.UI.Effects
+{
+ public class FloatCurveProperty : PropertyAttribute
+ {
+
+ }
+
+ [System.Serializable] //TODO test
+ public struct FloatCurve
+ {
+ public bool enabled;
+
+ readonly float defaultAmplitude;
+ public AnimationCurve weightOverTime;
+ public float amplitude;
+ public float waveSize;
+
+ public FloatCurve(float amplitude, float waveSize, float defaultAmplitude)
+ {
+ this.defaultAmplitude = defaultAmplitude;
+ this.enabled = false;
+ this.amplitude = amplitude;
+ this.weightOverTime = new AnimationCurve(new Keyframe(0, 0), new Keyframe(.5f, .5f), new Keyframe(1, 0));
+ this.weightOverTime.preWrapMode = WrapMode.Loop;
+ this.weightOverTime.postWrapMode = WrapMode.Loop;
+ this.waveSize = 0;
+ }
+
+ public float Evaluate(float passedTime, int charIndex)
+ {
+ if(!enabled) return defaultAmplitude;
+
+ return Mathf.LerpUnclamped(defaultAmplitude, amplitude, weightOverTime.Evaluate(passedTime + waveSize * charIndex));
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs.meta
new file mode 100644
index 0000000..b22e5db
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 534fa2c94985d4c0f9e3f08be5643d93
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs
new file mode 100644
index 0000000..ac8f73a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs
@@ -0,0 +1,29 @@
+namespace Febucci.UI.Effects
+{
+ [System.Serializable]
+ public struct TimeMode
+ {
+ public float startDelay;
+ public bool useUniformTime;
+ public float waveSize;
+ public float timeSpeed;
+
+ public TimeMode(bool useUniformTime)
+ {
+ this.useUniformTime = useUniformTime;
+ waveSize = 0;
+ timeSpeed = 1;
+ startDelay = 0;
+ tempTime = 0;
+ }
+
+ float tempTime;
+ public float GetTime(float animatorTime, float charTime, int charIndex)
+ {
+ tempTime = ((useUniformTime ? animatorTime : charTime) - startDelay) * timeSpeed - waveSize * charIndex;
+ if (tempTime < startDelay)
+ return -1;
+ return tempTime;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs.meta
new file mode 100644
index 0000000..d21f849
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7da2fc6307c647549bfdba8d42c00652
+timeCreated: 1680257522
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core.meta
new file mode 100644
index 0000000..34e886d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: da150bd21a2db4b87ac5eed209c5ae29
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs
new file mode 100644
index 0000000..1104dbd
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs
@@ -0,0 +1,54 @@
+using Febucci.UI.Core;
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ ///
+ /// Base class for animating letters in Text Animator
+ ///
+ public abstract class AnimationScriptableBase : ScriptableObject, ITagProvider
+ {
+ [SerializeField] string tagID;
+ public string TagID
+ {
+ get => tagID;
+ set => tagID = value; //TODO if playing, discard rebuild if already initialized
+ }
+
+ //--- INITIALIZATION ---
+ bool initialized = false;
+ public void InitializeOnce()
+ {
+ if(initialized) return;
+
+ initialized = true;
+
+ OnInitialize();
+ }
+
+ protected virtual void OnInitialize(){ }
+
+ void OnEnable()
+ {
+ //resets for enter playmode settings
+ initialized = false;
+ }
+
+ //--- ABSTRACT / VIRTUAL METHODS ---+
+
+ ///
+ /// Resets the effect context (base variables) for every region, before applying modifiers (if any) with
+ ///
+ public abstract void ResetContext(TAnimCore animator);
+
+ ///
+ /// Changes an effect' base variable based on the passed parameter.
+ ///
+ ///
+ public virtual void SetModifier(ModifierInfo modifier) { }
+ public abstract float GetMaxDuration();
+ public abstract bool CanApplyEffectTo(CharacterData character, TAnimCore animator);
+ public abstract void ApplyEffectTo(ref CharacterData character, TAnimCore animator);
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs.meta
new file mode 100644
index 0000000..19bc48a
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fdd8e5ebf6899a84f89605d743590fdb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs
new file mode 100644
index 0000000..b19fd63
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs
@@ -0,0 +1,14 @@
+using Febucci.UI.Core;
+
+namespace Febucci.UI.Effects
+{
+ ///
+ /// Contains animations that will be recognized and used by Text Animator
+ ///
+ [System.Serializable]
+ [UnityEngine.CreateAssetMenu(fileName = "Animations Database", menuName = "Text Animator/Animations/Create Animations Database", order = 100)]
+ public class AnimationsDatabase : Database
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs.meta
new file mode 100644
index 0000000..9870f19
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 103e863f5c0347be8a512f431aaf5ec1
+timeCreated: 1677521214
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs
new file mode 100644
index 0000000..e7109f9
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace Febucci.UI.Core
+{
+ [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
+ public class DefaultValueAttribute : Attribute
+ {
+ public readonly string variableName;
+ public readonly float variableValue;
+
+ public DefaultValueAttribute(string variableName, float variableValue)
+ {
+ this.variableName = variableName;
+ this.variableValue = variableValue;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs.meta
new file mode 100644
index 0000000..40defca
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 1aa92d7ec7964d30b8976caee1babfe7
+timeCreated: 1678706826
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs
new file mode 100644
index 0000000..c641318
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs
@@ -0,0 +1,34 @@
+using System;
+
+namespace Febucci.UI.Core
+{
+ [Flags]
+ public enum EffectCategory
+ {
+ None = 0,
+ Behaviors = 1,
+ Appearances = 2,
+ All = Behaviors | Appearances
+ }
+
+ [AttributeUsage(AttributeTargets.Class)]
+ public class TagInfoAttribute : Attribute
+ {
+ public readonly string tagID;
+ public TagInfoAttribute(string tagID)
+ {
+ this.tagID = tagID;
+ }
+ }
+
+ [AttributeUsage(AttributeTargets.Class)]
+ public class EffectInfoAttribute : TagInfoAttribute
+ {
+ public readonly EffectCategory category;
+
+ public EffectInfoAttribute(string tagID, EffectCategory category) : base(tagID)
+ {
+ this.category = category;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs.meta
new file mode 100644
index 0000000..8d82730
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d39438ca5b9e4692916f5929b4c3ff1d
+timeCreated: 1678384125
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings.meta
new file mode 100644
index 0000000..f75844b
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8b5322a2db28c4d3893673cabc2b05db
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs
new file mode 100644
index 0000000..7b202a1
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs
@@ -0,0 +1,105 @@
+using Febucci.UI.Actions;
+using Febucci.UI.Core;
+using Febucci.UI.Core.Parsing;
+using Febucci.UI.Effects;
+using UnityEngine;
+
+namespace Febucci.UI
+{
+ ///
+ /// Contains global settings for Text Animator, like effects enabled status and default databases.
+ ///
+ [System.Serializable]
+ [CreateAssetMenu(fileName = "Text Animator Settings", menuName = "Text Animator/Settings", order = 100)]
+ public sealed class TextAnimatorSettings : ScriptableObject
+ {
+ public const string expectedName = "TextAnimatorSettings";
+ static TextAnimatorSettings instance;
+
+ ///
+ /// The current instance of the settings. If it's null, it will be loaded from the resources.
+ /// (Make sure to have one "TextAnimatorSettings" file in the Resources folder.)
+ ///
+ public static TextAnimatorSettings Instance
+ {
+ get
+ {
+ if (instance) return instance;
+
+ LoadSettings();
+ return instance;
+ }
+ }
+
+ ///
+ /// Manually loads the settings ScriptableObject in case it wasn't loaded yet.
+ ///
+ public static void LoadSettings()
+ {
+ if(instance) return;
+ instance = Resources.Load(expectedName);
+ }
+
+ ///
+ /// Manually unloads the settings ScriptableObject instance.
+ ///
+ public static void UnloadSettings()
+ {
+ if(!instance) return;
+
+ Resources.UnloadAsset(instance);
+ instance = null;
+ }
+
+ ///
+ /// Sets all the effects (both appearances/disappearances and behaviors) status.
+ ///
+ ///
+ public static void SetAllEffectsActive(bool enabled)
+ {
+ SetAppearancesActive(enabled);
+ SetBehaviorsActive(enabled);
+ }
+
+ ///
+ /// Sets all appearances effects status.
+ ///
+ ///
+ public static void SetAppearancesActive(bool enabled)
+ {
+ if (Instance) Instance.appearances.enabled = enabled;
+ }
+
+ ///
+ /// Sets all behaviors effects status.
+ ///
+ ///
+ public static void SetBehaviorsActive(bool enabled)
+ {
+ if (Instance) Instance.behaviors.enabled = enabled;
+ }
+
+ [System.Serializable]
+ public struct Category where T : ScriptableObject
+ {
+ public T defaultDatabase;
+
+ public bool enabled;
+ public char openingSymbol;
+ public char closingSymbol;
+
+ public Category(char openingSymbol, char closingSymbol)
+ {
+ defaultDatabase = null;
+ enabled = true;
+ this.openingSymbol = openingSymbol;
+ this.closingSymbol = closingSymbol;
+ }
+ }
+
+ [Header("Default info")]
+ public Category behaviors = new Category('<', '>');
+ public Category appearances = new Category('{', '}');
+ public Category actions = new Category('<', '>');
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs.meta
new file mode 100644
index 0000000..e937fc6
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9743a50feedea474dbef99517d3e30eb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities.meta
new file mode 100644
index 0000000..5863d14
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b0ccd8b0aa52fed49bcb7994d0e16485
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs
new file mode 100644
index 0000000..a0ac156
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs
@@ -0,0 +1,54 @@
+using System.Collections.Generic;
+
+namespace Febucci.UI.Core
+{
+ ///
+ /// Helper class. Contains methods to parse attributes/values from strings.
+ ///
+ public static class FormatUtils
+ {
+ ///
+ /// Tries to parse a rich text tag parameter.
+ ///
+ ///
+ /// Mostly used in combination with custom typewriter actions. (Manual: Writing Custom actions C#)
+ ///
+ /// list of all the attributesi in the rich text tag
+ /// the parameter's index in the list
+ /// default value, assigned if the parsing is not successful
+ /// result from the parsing
+ /// true if successful
+ public static bool TryGetFloat(List attributes, int index, float defValue, out float result)
+ {
+ if (index >= attributes.Count || index < 0)
+ {
+ result = defValue;
+ return false;
+ }
+
+ return TryGetFloat(attributes[index], defValue, out result);
+ }
+
+ //TODO Docs
+ public static bool TryGetFloat(string attribute, float defValue, out float result)
+ {
+ if (ParseFloat(attribute, out result))
+ return true;
+
+ result = defValue;
+ return false;
+ }
+
+ ///
+ /// Tries parsing a float given a string, independently of the system's culture
+ ///
+ ///
+ ///
+ ///
+ public static bool ParseFloat(string value, out float result)
+ {
+ return float.TryParse(value, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out result);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs.meta
new file mode 100644
index 0000000..a4e8332
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fa97b1b4f8a3bfa4b82ca06b835b4bb7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs
new file mode 100644
index 0000000..6c2a6fd
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs
@@ -0,0 +1,216 @@
+using UnityEngine;
+
+namespace Febucci.UI.Core
+{
+ ///
+ /// Helper class. Contains methods (including extensions) that modify your letters positions and colors.
+ ///
+ public static class TextUtilities
+ {
+ #region Consts
+
+ ///
+ /// Represents the number of vertices per character/letter.
+ ///
+ ///
+ /// P.S. bars/underlines have a different vertices number, but are not animated by TextAnimator.
+ ///
+ public const int verticesPerChar = 4;
+
+ #endregion
+
+ #region Vector Utilities
+
+ public const int fakeRandomsCount = 25; //18° angle difference
+ internal static Vector3[] fakeRandoms;
+ public static Vector3[] FakeRandoms => fakeRandoms;
+
+ static bool initialized = false;
+ internal static void Initialize()
+ {
+ if (initialized)
+ return;
+
+ initialized = true;
+
+ //Creates fake randoms from a list of directions (with an incremental angle of 360/fakeRandomsCount between each)
+ //and then sorts them randomly, avoiding repetitions (which could have occurred using Random.insideUnitCircle)
+ System.Collections.Generic.List randomDirections = new System.Collections.Generic.List();
+
+ float angle;
+ for (float i = 0; i < 360; i += 360 / fakeRandomsCount)
+ {
+ angle = i * Mathf.Deg2Rad;
+ randomDirections.Add(new Vector3(Mathf.Sin(angle), Mathf.Cos(angle)).normalized);
+ }
+
+ fakeRandoms = new Vector3[fakeRandomsCount];
+ int randomIndex;
+ for (int i = 0; i < fakeRandoms.Length; i++)
+ {
+ randomIndex = Random.Range(0, randomDirections.Count);
+ fakeRandoms[i] = randomDirections[randomIndex];
+ randomDirections.RemoveAt(randomIndex);
+ }
+ }
+
+ ///
+ /// Rotates a point around a 2D center by X degrees
+ ///
+ /// point to rotate
+ /// rotation's center
+ /// rotation degrees
+ ///
+ ///
+ /// letterVertex.RotateAround(letterMiddlePoint, angle);
+ ///
+ public static Vector3 RotateAround(this Vector3 vec, Vector2 center, float rotDegrees)
+ {
+ rotDegrees *= Mathf.Deg2Rad;
+
+ float tempX = vec.x - center.x;
+ float tempY = vec.y - center.y;
+
+ float rotatedX = tempX * Mathf.Cos(rotDegrees) - tempY * Mathf.Sin(rotDegrees);
+ float rotatedY = tempX * Mathf.Sin(rotDegrees) + tempY * Mathf.Cos(rotDegrees);
+
+ vec.x = rotatedX + center.x;
+ vec.y = rotatedY + center.y;
+
+ return vec;
+ }
+
+ #endregion
+
+ ///
+ /// Moves a char towards a direction. Equivalent to adding a vector to all the vertices.
+ ///
+ ///
+ ///
+ ///
+ public static void MoveChar(this Vector3[] vec, Vector3 dir)
+ {
+ for (byte j = 0; j < vec.Length; j++)
+ {
+ vec[j] += dir;
+ }
+ }
+
+ ///
+ /// Sets all the vertices of character to the given position.
+ ///
+ ///
+ ///
+ ///
+ public static void SetChar(this Vector3[] vec, Vector3 pos)
+ {
+ for (byte j = 0; j < vec.Length; j++)
+ {
+ vec[j] = pos;
+ }
+ }
+
+ ///
+ /// Lerps all the character's vertices (without checking if pct is between 0 and 1)
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void LerpUnclamped(this Vector3[] vec, Vector3 target, float pct)
+ {
+ for (byte j = 0; j < vec.Length; j++)
+ {
+ vec[j] = Vector3.LerpUnclamped(vec[j], target, pct);
+ }
+ }
+
+ ///
+ /// Returns the middle position of the given array
+ ///
+ ///
+ ///
+ public static Vector3 GetMiddlePos(this Vector3[] vec)
+ {
+ return (vec[0] + vec[2]) / 2f; //bot left and top right
+
+ //'Normal way', for arrays with any size (not happening, since Bars aren't animated)
+ /*
+ Vector3 middlePos = Vector3.zero;
+ for (byte j = 0; j < vec.Length; j++)
+ {
+ middlePos += vec[j];
+ }
+
+ return (middlePos / vec.Length);
+ */
+ }
+
+
+ ///
+ /// Rotates all the vertices towards an angle, with their center as the rotation pivot
+ ///
+ ///
+ ///
+ ///
+ public static void RotateChar(this Vector3[] vec, float angle)
+ {
+ Vector3 middlePos = vec.GetMiddlePos();
+ for (byte j = 0; j < vec.Length; j++)
+ {
+ vec[j] = vec[j].RotateAround(middlePos, angle);
+ }
+ }
+
+ public static void RotateChar(this Vector3[] vec, float angle, Vector3 pivot)
+ {
+ for (byte j = 0; j < vec.Length; j++)
+ {
+ vec[j] = vec[j].RotateAround(pivot, angle);
+ }
+ }
+
+ ///
+ /// Sets the color of all the vertices of the character.
+ ///
+ ///
+ ///
+ ///
+ public static void SetColor(this Color32[] col, Color32 target)
+ {
+ for (byte j = 0; j < col.Length; j++)
+ {
+ col[j] = target;
+ }
+ }
+
+ ///
+ /// Lerps all the colors of the characters towards a given target
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void LerpUnclamped(this Color32[] col, Color32 target, float pct)
+ {
+ for (byte j = 0; j < col.Length; j++)
+ {
+ col[j] = Color32.LerpUnclamped(col[j], target, pct);
+ }
+ }
+
+
+ ///
+ /// Calculates the animation curve duration
+ ///
+ ///
+ ///
+ public static float CalculateCurveDuration(this AnimationCurve curve)
+ {
+ if (curve.keys.Length > 0)
+ return curve.keys[curve.length - 1].time;
+
+ return 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs.meta
new file mode 100644
index 0000000..26fec25
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 792ffbd6b25610f48800fce737481b10
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs
new file mode 100644
index 0000000..f461a83
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs
@@ -0,0 +1,90 @@
+using UnityEngine;
+
+namespace Febucci.UI.Effects
+{
+ //TODO Docs
+
+ ///
+ /// Helper class used to interpolate effects.
+ ///
+ public static class Tween
+ {
+ public static float EaseIn(float t)
+ {
+ return t * t;
+ }
+
+ public static float Flip(float x)
+ {
+ return 1 - x;
+ }
+
+ public static float Square(float t)
+ {
+ return t * t;
+ }
+
+ public static float EaseOut(float t)
+ {
+ return Flip(Square(Flip(t)));
+ }
+
+ public static float EaseInOut(float t)
+ {
+ return Mathf.Lerp(EaseIn(t), EaseOut(t), t);
+ }
+
+ #region BounceOut
+ public static float BounceOut(float t)
+ {
+ /*
+ License of the original method/algorithm, modified later for C#.
+
+ ------------------------Start------------------------
+ The MIT License
+
+ Copyright (c) 2010-2012 Tween.js authors.
+
+ Easing equations Copyright (c) 2001 Robert Penner http:/robertpenner.com/ easing/
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+ ------------------------End------------------------
+ */
+
+ if (t < (1f / 2.75f))
+ {
+ return 7.5625f * t * t;
+ }
+ else if (t < (2f / 2.75f))
+ {
+ return 7.5625f * (t -= (1.5f / 2.75f)) * t + 0.75f;
+ }
+ else if (t < (2.5f / 2.75f))
+ {
+ return 7.5625f * (t -= (2.25f / 2.75f)) * t + 0.9375f;
+ }
+ else
+ {
+ return 7.5625f * (t -= (2.625f / 2.75f)) * t + 0.984375f;
+ }
+ }
+ #endregion
+ }
+}
diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs.meta
new file mode 100644
index 0000000..93d140d
--- /dev/null
+++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2edcfb3709f1187429d9fda2e36df38e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset
index 9dc9cd8..b6ee06b 100644
--- a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset
+++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset
@@ -48,8 +48,8 @@ Material:
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- - _StencilReadMask: 255
- - _StencilWriteMask: 255
+ - _StencilReadMask: 1
+ - _StencilWriteMask: 0
- _TextureHeight: 1024
- _TextureWidth: 1024
- _UnderlayDilate: 0